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中管理表单,请使用Post
Redirect 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。它可以处理以下情况:

  • 重定向到URL(无路由名称,该路由的URL)
  • 重定向到没有参数的路由
  • 重定向到当前匹配的路由
  • 对于第一种情况,必须将
    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();