2011-09-06 130 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设置,要求用户登录才能查看页面。如果控制器检测到用户未登录,则会将用户重定向到登录页面。