$ 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 / 相同。无论如何我可以使用重定向
答案 0 :(得分:32)
重定向执行301或302重定向到指定的路径/位置。您可以使用它来传递我认为的完整URL。使用此方法将导致URL在地址栏中更改。
由于Redirect使用简单的301/302标头进行重定向,因此除了URL之外,无法将模板参数传递到新位置,就像对任何控制器或URL一样。
渲染只是将您告诉它的模板文件呈现为对当前请求的响应。通过这种方式,您可以正常传递模板参数数组。
还有Forward将请求转发给另一个控制器,在内部发送该控制器响应作为对当前请求的响应而没有任何重定向。使用此方法在内部重新路由请求,而不更改地址栏中的URL。
Render和Redirect之间的关键区别在于Render是View系统的一部分,因此可以将参数传递给tempaltes。 Redirect是Controller系统的一部分,对View没有任何了解。您可以将参数传递给要重定向到的路径或URL,但目标位置必须对它们执行某些操作才能将它们传递给View。