Redirect 控制器操作中的yii2重定向不起作用?
为了保存用户数据,我正在将表单发布到/user/save。如果$\u服务器['REQUEST\u METHOD']不是'post',则尝试重定向用户时会出现问题 我的用户控制器代码Redirect 控制器操作中的yii2重定向不起作用?,redirect,yii2,Redirect,Yii2,为了保存用户数据,我正在将表单发布到/user/save。如果$\u服务器['REQUEST\u METHOD']不是'post',则尝试重定向用户时会出现问题 我的用户控制器代码 namespace app\controllers; use Yii; use yii\web\Controller; use app\models\MyUser; class UserController extends Controller { public function actionSave() {
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\MyUser;
class UserController extends Controller {
public function actionSave() {
if(!Yii::$app->request->getIsPost()) {
$this->redirect('/user/index',302);
exit(0);
}
//do something to save user submitted data
}
}//~CLASS
无法使重定向正常工作。虽然!Yii::$app->request->getIsPost()为false
对$this->redirect的调用没有任何作用代码>
非常感谢您的帮助。试试这个
if(!Yii::$app->request->getIsPost())
{
Yii::$app->response->redirect(array('user/index','id'=>302));
exit(0);
}
在Yii2中,我们需要return()
操作的结果。我认为您需要在重定向之前添加一个return
return $this->redirect(['user/index']);
这是另一种方法
if(!Yii::$app->request->getIsPost()) {
return Yii::$app->getResponse()->redirect(array('/user/index',302));
}
如果您试图在beforeAction()中执行重定向,则应使用send()方法
return $this->redirect('/some/url',302)->send();
将浏览器重定向到指定的URL
此方法向当前响应添加“位置”标题。请注意,在调用send()之前,它不会发送头。在控制器操作中,您可以按如下方式使用此方法:
return Yii::$app->getResponse()->redirect($url);
在其他地方,如果要立即发送“位置”标题,应使用以下代码:
Yii::$app->getResponse()->redirect($url)->send();
return;
我挣扎在重定向上,没有工作很长时间,
在我尝试以下方法之前,上述所有方法都不适用于我:
更改:
return $this->redirect('site/secure');
致:
换句话说,需要将其括在[]括号内!
我使用的是PHP7,可能是原因吧?不要使用exit(0)代码>在最好的时候,这是不好的做法。使用Yii::$app->end()代码>
所以你的代码看起来像
$this->redirect(['index'], 302);
Yii::$app->end();
也就是说,虽然实际问题是停止POST请求,但这是解决该问题的错误方法(尽管它确实有效)。要停止POST请求,您需要使用
您也可以通过此方法重定向:
return Yii::$app->response->redirect(['user/index', 'id' => 10]);
如果要立即发送标题信息,请与send()一起使用。此方法将位置标题添加到当前响应中
return Yii::$app->response->redirect(['user/index', 'id' => 10])->send();
如果您想要完整的URL,请使用类似URL::to(['user/index','id'=>302])
的标题use yii\helpers\URL代码>
有关更多信息,请查看。
希望这能对某人有所帮助。您似乎指的是YII v.1.X代码。这是Yii v.1.X代码吗?谢谢,但请使用url::to()类提供更好的url。。最佳regardsReturn to函数对于重定向不是必需的。如果在重定向后使用exit,则它将不起作用。正在发生的事情不知道下面有一个答案,如果您在操作之前使用inside…“如果您试图在beforeAction()中执行重定向,则应使用send()方法”return$this->redirect('/some/url',302)->send()代码>仅供参考,请参考此链接:括在[]
括号内的是Yi2标准。是的,这就是array()的作用,我现在明白了!尽管如此,我还是感到困惑,为什么我最新的Yi2教程在重定向('text')命令上既没有使用['text']也没有使用数组('text')。谢谢,这是我的问题。这应该是选择的答案
return Yii::$app->response->redirect(['user/index', 'id' => 10]);
return Yii::$app->response->redirect(['user/index', 'id' => 10])->send();