2011-09-06 127 views
1

我嘗試使用Chtml :: link從站點控制器鏈接到另一個控制器動作,但它會將我重定向到站點/登錄頁面。Chtml鏈接失敗

這段代碼我在從現場控制器提供的登錄視圖看起來是這樣的:

<?php $this->beginWidget('system.web.widgets.CClipWidget', array('id'=>'Aboutinfo')); 
. 
. 
<?php echo CHtml::link('Learn more here', array('site/page','view'=>'about')); ?> 
. 
. 
echo CHtml::link('Link label', array('othercontroller/action'));?> 
. 
. 
<?php $this->endWidget();?> 

感謝您的任何建議/什麼,我可能是做錯了

+1

什麼在做重定向?那個其他控制器是否需要認證? – ldg

+0

@ldg我不是什麼導致重定向。我點擊鏈接標籤,而不是打開與其他控制器中的操作對應的頁面,它只是打開一個空白頁面,其URL指向站點/登錄名。如果我刪除其他控制器/操作,它會按照我的預期打開默認站點/索引。 – clamoti

+0

您是否有一些默認設置需要對此控制器進行身份驗證? –

回答

2

更正檢查accessRules功能在您嘗試鏈接到的控制器中。您應該看到這樣的事情:

public function accessRules() 
    { 
     return array(
      array('allow', 
       'actions'=>array('index'), 
       'users'=>array('*'), 
      ), 
      array('allow', 
       'actions'=>array('browse', 'add'), 
       'users'=>array('@'), 
      ), 
      array('deny', // deny all users 
       'users'=>array('*'), 
      ), 
     ); 
    } 

「用戶」 =>陣列(「*」)是指允許任何用戶訪問行爲。 'users'=>數組('@')表示僅允許登錄的用戶訪問該動作(在上述情況下瀏覽&添加)。

確保您的規則設置是正確的。我懷疑你鏈接到的操作有accessRules設置,要求用戶登錄才能查看頁面。如果控制器檢測到用戶未登錄,則會將用戶重定向到登錄頁面。