【问题标题】:Difference between $this->render and $this->redirect Symfony2$this->render 和 $this->redirect Symfony2 之间的区别
【发布时间】:2012-03-15 14:22:06
【问题描述】:

$this->render 和 $this->redirect 有什么区别。有没有一种方法可以像使用 $this->redirect 一样使用 $this->render 传递参数

return $this->render('MedicineUserBundle:User:home.html.twig', array(
                 'info'      => $all,));

我可以这样做吗:-

return $this->redirect($this->generateUrl('MedicineUserBundle_login', array(
             'info'      => $all,)));

或者有没有其他方法可以通过 $this->redirect 将值传递到我的模板树枝文件。

还有一个问题,我如何使用$this->redirect 更改网址,例如,如果我不必将任何值传递给我的模板文件,我可以按照上面提到的那样执行,渲染会将我带到像 localhost 这样的页面/myproject/home$->this->redirect 将执行控制器,但 url 将与 localhost/myproject/ 相同。无论如何我可以使用重定向重定向到另一个网址

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    重定向()

    重定向执行 301 或 302 重定向到指定的路由/位置。您可以使用它来传递我相信的完整 URL。使用此方法会导致地址栏中的 URL 发生变化。

    由于 Redirect 使用简单的 301/302 标头进行重定向,因此无法将模板参数传递到新位置,除了 URL 上,就像您对任何控制器或 URL 所做的那样。

    渲染()

    Render 只是渲染你告诉它的模板文件作为对当前请求的响应。有了这个,你可以像往常一样传入你的模板参数数组。

    转发()

    还有 Forward 将请求转发到内部的另一个控制器,将该控制器的响应作为对当前请求的响应返回,而不进行任何重定向。使用此方法在内部重新路由请求,而不更改地址栏中的 URL。

    渲染和重定向之间的主要区别在于渲染是视图系统的一部分,因此可以将参数传递给模板。重定向是控制器系统的一部分,对视图一无所知。您可以将参数传递给您要重定向到的路由或 URL,但目标位置必须对它们进行一些处理才能将它们传递给视图。

    【讨论】:

    • 感谢您的回复,但这不是我问题的完美答案。如果可能,请再次阅读我的问题。
    猜你喜欢
    • 2013-10-23
    • 2017-12-22
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多