$ this-> render和$ this->重定向Symfony2之间的区别

时间:2012-02-25 08:26:18

标签: php symfony

$ this-> render和$ this-> redirect之间有什么区别?有没有办法可以通过$ this->渲染传递参数,就像我使用$ this-> redirect

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

我可以这样做: -

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

或者我还可以使用$ this->重定向到我的模板twig文件传递值。

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

重定向到另一个网址

1 个答案:

答案 0 :(得分:32)

重定向()

重定向执行301或302重定向到指定的路径/位置。您可以使用它来传递我认为的完整URL。使用此方法将导致URL在地址栏中更改。

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

渲染()

渲染只是将您告诉它的模板文件呈现为对当前请求的响应。通过这种方式,您可以正常传递模板参数数组。

转发()

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

Render和Redirect之间的关键区别在于Render是View系统的一部分,因此可以将参数传递给tempaltes。 Redirect是Controller系统的一部分,对View没有任何了解。您可以将参数传递给要重定向到的路径或URL,但目标位置必须对它们执行某些操作才能将它们传递给View。