$this之间的差异->;render和$this->;重定向Symfony2


Difference between $this->render and $this->redirect Symfony2

$this->render和$this->重定向之间有什么区别。有没有一种方法可以像我用$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将值传递到我的模板trick文件。

还有一个问题是,我如何使用$this->redirect更改url,例如,如果我不必向我的模板文件传递任何值,我可以如上所述执行,则渲染会将我带到类似于localhost/myproject/home的页面,但$->this->redirect将执行控制器,但url将与localhost/mypproject/相同。我是否可以使用重定向重定向到另一个url

重定向()

重定向执行301或302重定向到指定的路由/位置。我相信你可以用这个来传递一个完整的URL。使用此方法将导致地址栏中的URL发生更改。

因为Redirect使用一个简单的301/302头来进行重定向,所以除了在URL上,没有办法像对任何控制器或URL那样将模板参数传递到新位置。

渲染器()

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

Forward()

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

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