我尝试使用Chtml :: link从站点控制器链接到另一个控制器操作,但它会将我重定向到站点/登录页面。
我在站点控制器呈现的登录视图中的代码如下所示:
<?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();?>
感谢您对我可能做错的任何建议/更正
答案 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'=&gt; array('*')表示允许任何用户访问该操作。行'users'=&gt; array('@')表示只允许登录用户访问操作(在上述情况下浏览和添加)。
确保您的规则设置正确无误。我怀疑您链接的操作具有accessRules设置,需要用户登录才能查看该页面。如果控制器检测到用户未登录,则会将用户重定向到登录页面。