我将表单发布到/ user/save以保存用户数据.如果$ _SERVER ['REQUEST_METHOD']不是'post',我尝试重定向用户时会出现问题.
我的用户控制器代码
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
Run Code Online (Sandbox Code Playgroud)
无法使重定向工作.虽然!Yii::$app->request->getIsPost() is false打电话给$this->redirect does nothing!
任何帮助赞赏.
Den*_*G B 50
在Yii2中,我们需要动作return()的结果.我认为你需要return在重定向前添加一个.
return $this->redirect(['user/index']);
Run Code Online (Sandbox Code Playgroud)
小智 27
如果您尝试在beforeAction()中进行重定向,则应使用send()方法
return $this->redirect('/some/url',302)->send();
Run Code Online (Sandbox Code Playgroud)
您也可以通过此方法重定向:
return Yii::$app->response->redirect(['user/index', 'id' => 10]);
Run Code Online (Sandbox Code Playgroud)
如果您想立即发送 Header 信息,请使用send()。此方法将一个Location标头添加到当前响应中。
return Yii::$app->response->redirect(['user/index', 'id' => 10])->send();
Run Code Online (Sandbox Code Playgroud)
如果您想要完整的 URL,请使用 likeUrl::to(['user/index', 'id' => 302])和use yii\helpers\Url;.
有关更多信息,请查看此处。希望这会帮助某人。
小智 7
我挣扎着重定向不能长时间工作,上面提到的都没有为我工作,直到我尝试了这个:
更改:
return $this->redirect('site/secure');
Run Code Online (Sandbox Code Playgroud)
至:
return $this->redirect(['site/secure']);
Run Code Online (Sandbox Code Playgroud)
换句话说,需要将它括在[]括号内!我使用PHP 7,可能是为什么?
小智 5
将浏览器重定向到指定的 URL。
此方法将“Location”标头添加到当前响应中。请注意,在调用 send() 之前它不会发送标头。在控制器操作中,您可以按如下方式使用此方法:
return Yii::$app->getResponse()->redirect($url);
Run Code Online (Sandbox Code Playgroud)
在其他地方,如果您想立即发送“Location”标头,您应该使用以下代码:
Yii::$app->getResponse()->redirect($url)->send();
return;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97681 次 |
| 最近记录: |