Zend framework2 ZF2-使用post重定向get并重定向到带有参数的URL
要在Zend framework2 ZF2-使用post重定向get并重定向到带有参数的URL,zend-framework2,Zend Framework2,要在ZF2 Iam中管理表单,请使用PostRedirect Get。有关这方面的文档可以找到 到目前为止,我的重定向相对简单,并且我能够重新定向到路由,但是我遇到了一个需要重定向到具有特定参数的特定URL的情况 www.mysite.com/users/edit/id/1/page/4 路由是用户/编辑,我需要设置参数id=1和page=4,这样在编辑用户数据后,我会重定向回用户页面 通常,我的控制器如下所示: public function indexAction() {
ZF2 I
am中管理表单,请使用PostRedirect Get
。有关这方面的文档可以找到
到目前为止,我的重定向相对简单,并且我能够重新定向到路由,但是我遇到了一个需要重定向到具有特定参数的特定URL的情况
www.mysite.com/users/edit/id/1/page/4
路由是用户/编辑,我需要设置参数id=1
和page=4
,这样在编辑用户数据后,我会重定向回用户页面
通常,我的控制器如下所示:
public function indexAction()
{
$user_id = (int) $this->params()->fromRoute('id', 0);
$page_id = (int) $this->params()->fromRoute('page', 0);
$prg = $this->prg('users/edit');
//If user has posted, execute the re-direct
if ($prg instanceof Response) {
return $prg;
} elseif ($prg === false) {
//First time form has been loaded set the view
}
//User has hit submit, do submit stuff here
上述示例不起作用,因为重定向
没有使用参数将
重新定向到url。要使其正常工作,您需要更新以下内容::
Replace:: $prg = $this->prg('/user/edit/id');
致:
True将PRG从路由切换到URL
现在,当用户提交数据时,他们将被重定向到定义的URL
当然,你可以简单地设置一个邮政路线。。。但是你需要不止一个动作
这是我的解决方案,我想不出更好的办法。所以我的问题很简单,有没有更好的方法呢?这是PRG的一个bug。它可以处理以下情况:
true
作为第二个参数传递
// True to keep matched params
$url = $this-url()->fromRoute('foo/bar/baz', array(), true);
// True to note PRG it's a URL, no route name
$prg = $this->prg($url, true);
对于第二种情况,这是最常见的情况:
$prg = $this->prg('foo/bar/baz');
最后一个场景使用当前选择的路由。我们通常对具有参数的路由执行此操作,其中路由参数必须重复使用,并且我们使用相同的路由:
$prg = $this->prg();
如果您有一个要应用PRG的路由,并且此路由包含路由匹配参数,我建议您使用
null
(或者,不提供任何参数)。如果此PRG路线与您当前使用的路线不同,您必须提供URL。我已编辑了您的标题。请不要在问题标题中包含关于所用语言的信息,除非没有它就没有意义。标签就是为了这个目的。还有,如果共识是“不,他们不应该
$prg = $this->prg();