Разница между $ this-> render и $ this-> redirect Symfony2 - PullRequest
8 голосов
/ 25 февраля 2012

В чем разница между $ this-> render и $ this-> redirect. Есть ли способ, которым я могу передать аргументы с $ this-> render, как я делаю с $ this-> redirect

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

Могу ли я сделать что-то вроде этого: -

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

Или есть другой способ передать значения с помощью $ this-> redirect в файл шаблона.

И еще один вопрос. Как я могу изменить URL-адрес с помощью $this->redirect, например, если мне не нужно передавать какие-либо значения в мой файл шаблона, я могу сделать это, как упомянуто выше, рендер приведет меня на страницу типа localhost / myproject / home , но $->this->redirect выполнит контроллер, но URL будет таким же, как localhost / myproject / . В любом случае я могу перенаправить на другой URL, используя перенаправление

1 Ответ

32 голосов
/ 25 февраля 2012

Перенаправление ()

Redirect выполняет перенаправление 301 или 302 на указанный маршрут / местоположение. Вы можете использовать это, чтобы передать полный URL, я верю. Использование этого метода приведет к изменению URL-адреса в адресной строке.

Поскольку в Redirect используется простой заголовок 301/302 для перенаправления, невозможно передать параметры шаблона в новое местоположение, кроме как по URL-адресу, как это делается для любого контроллера или URL-адреса.

Render ()

Render просто отображает файл шаблона, который вы ему сообщаете, в ответ на текущий запрос. При этом вы можете передать свой массив параметров шаблона как обычно.

вперед ()

Существует также Переадресация, которая будет пересылать запрос другому контроллеру, внутренне отправляя ответ этих контроллеров обратно как ответ на текущий запрос без каких-либо перенаправлений. При использовании этого метода внутренний запрос перенаправляется без изменения URL-адреса в адресной строке.

Ключевое различие между Render и Redirect в том, что Render является частью системы View и поэтому может передавать параметры в tempaltes. Redirect является частью системы Controller и ничего не знает о View. Вы можете передать параметры маршруту или URL-адресу, на который вы перенаправляете, но целевое местоположение должно затем что-то с ними сделать, чтобы передать их в View.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...