【问题标题】:symfony redirect with 2 parameters带有 2 个参数的 symfony 重定向
【发布时间】:2010-12-02 14:09:40
【问题描述】:

如何重定向到另一个传递 2 个或更多参数的操作?

这段代码:

$this->redirect('input/new?year=' . $year . '&month=' . $month);

网址中的结果:

http://.../input?year=2009&month=9

【问题讨论】:

    标签: php redirect symfony1


    【解决方案1】:

    嗯,这很正常,“重定向”重定向到绝对 URL。你可以这样做:

    $this->redirect($this->generateUrl('default', array('module' => 'input',
    'action' => 'new', 'year' => $year, 'month' => $month)));
    

    【讨论】:

    • 这有帮助。除了它生成像“http://.../input/new/year/2009/month/10”这样的url
    • 如果你定义了一个路由,你可以用它的名字替换'default',如果需要的话,用路由的参数来改变第二个参数。
    • 如果定义了路由,其实可以使用$this->redirectToRoute('routename', ['param1' => 'value', ['param2' => 'value'])
    【解决方案2】:

    在当前支持的 Symfony 版本(2.7+)it's even easier(另外,您还可以选择在末尾添加状态码):

    return $this->redirectToRoute(
        'default',
        array('year' => $year, 'month' => $month),
        Response::HTTP_MOVED_PERMANENTLY // = 301
    );
    

    【讨论】:

      【解决方案3】:

      也可以使用redirect,指定路由名称和参数数组:

      $this->redirect('route_name', array('year' => $year, 'month' => $month));
      

      (在 Symfony 1.4 上测试)

      【讨论】:

        【解决方案4】:

        我认为这不是正常的 symfony 行为。你定义了一些路由规则吗?

        你也试过这个吗:

        $this->redirect('module/action?'.http_build_query($paramsArray));
        

        【讨论】:

          【解决方案5】:

          奇怪的东西。有没有

          $this->redirect('@default?module=input&action=new&year=' . $year . '&month=' . $month);
          

          为你工作?

          【讨论】:

          • 是的,这也有效。谢谢,但 xarch 的解决方案更漂亮 =)
          【解决方案6】:
          $this->redirect('input/new/year/' . $year . '/month/' . $month);
          

          【讨论】:

          • 这破坏了symfony的内部路由系统
          • 它实际上没有。 symfony 的智能内部路由引擎正是这个重定向起作用的原因!但感谢您的反对;)
          • 当你这样做时,你必须在调整相应的路由规则时更改所有链接/重定向
          猜你喜欢
          • 2017-06-28
          • 1970-01-01
          • 2014-06-10
          • 1970-01-01
          • 1970-01-01
          • 2018-02-19
          • 2021-10-23
          • 1970-01-01
          • 2012-05-17
          相关资源
          最近更新 更多