Разница между $ this-> render и $ this-> redirect Symfony2

В чем разница между $ 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 в мой файл twig-файла.

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

Solutions Collecting From Web of "Разница между $ this-> render и $ this-> redirect Symfony2"

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

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

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

Render ()

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

Вперед()

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

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