yii重定向不工作

时间:2014-09-17 06:18:39

标签: php yii url-redirection

在Yii框架中$this->redirect功能不起作用。

class TplUserNavigation extends CWidget{

public function run()
    {
        if(isset(Yii::app()->user->id) && Yii::app()->user->getState('userType') == 'User'){
         $users = Users::model()->findByAttributes(array('id'=>Yii::app()->user->id));
         $this->render('webroot.themes.'.Yii::app()->theme->name.'.views.layouts.tpl_navigation', array('users'=>$users));
        }else{
          $this->redirect('site/index'); 
    }
}

16 个答案:

答案 0 :(得分:12)

尝试:

$this->redirect("site/index"); 

或者如果您想重定向到主页:

$this->redirect(Yii::app()->homeUrl);

CWidget 尝试:

$this->owner->redirect(array("site/index"));

阅读更多关于从小部件重定向的here

答案 1 :(得分:2)

由于您只是想尝试访问网站的索引,请尝试以下方法:

 $this->redirect(Yii::app()->baseUrl);

如果您想将用户重定向到主页以外的其他页面,请尝试使用:

 $this->redirect(Yii::app()->createUrl('controlller/action'));

当您尝试使用yii url规则重写URL时,这将非常方便。

答案 2 :(得分:2)

 $this->redirect(array('site/index'));

答案 3 :(得分:1)

你应该试试这个,希望它有帮助

$this->redirect(array('site/index'));

你也可以试试这个......

Yii::app()->getController()->redirect(array('/path/to/url'));

答案 4 :(得分:0)

从重定向功能中删除数组

Syntex $this->redirect(<contoroller>/<action>)

否则试试这个

$this->redirect(Yii::app()->createUrl('controller/action'));

答案 5 :(得分:0)

这是一种简单的方法(在返回函数和exit()之前放置代码):

header('Location: ' . Url::toRoute('/post/index'));
exit();
return ....

答案 6 :(得分:0)

您可以使用

$this->redirect(Router::url(array('controller'=>'site', 'action'=>'index')));

答案 7 :(得分:0)

$this->redirect(Yii::app()->createUrl('site/index')); 

答案 8 :(得分:0)

您可以这样使用:

$这 - &GT;重定向(阵列( 'ACTION_NAME'));

示例:$ this-&gt; redirect(array('view'));

答案 9 :(得分:0)

试试这个: $这 - &GT;重定向(阵列( '' 网站/索引'));

答案 10 :(得分:0)

您还可以使用以下方法重定向 Yii

Yii::app()->getController()->redirect(array('/path/to/url'));

答案 11 :(得分:0)

然后是Yii 1:

e.g。

    $this->redirect(['route_to_action,GET_PARAMETERS]);

阅读手册: http://www.yiiframework.com/doc/api/1.1/CController#redirect-detail

答案 12 :(得分:0)

你不能使用:

$this->redirect 
从小部件

导致在这种情况下$ this用于当前小部件,小部件没有重定向方法,而不是控制器。你需要的是Yii :: app() - &gt;控制器,它将从Yii的任何地方获得活动的控制器实例,如:

Yii::app()->controller->redirect('site/index');

答案 13 :(得分:0)

在您的情况下,$thisCWidget,而不是CController。 CWidget没有redirect方法。

其次,$this->createUrl将创建一个URL相对cu当前控制器($this->owner)。

使用Yii::app()->createUrl('/site/index')

请注意/之前的site前导createUrl相对于baseUrl,而不是当前控制器。

答案 14 :(得分:-1)

可能是这样(取决于你的项目),你必须使用:

来自控制器的

Yii::$app->redirect('site/index');

答案 15 :(得分:-1)

1)随处重定向

Yii::app()->request->redirect(Yii::app()->createAbsoluteUrl("controller/action"));

2)控制器之间的重定向

 $this->redirect(array("controller/action"));