Подтвердить что ты не робот

Symfony2: в Twig, передать запрос с функцией Render

Я понимаю, что использование {% render() %} автоматически заставляет новый объект запроса отправляться, но им любопытно, есть ли способ передать в исходном запросе в качестве аргумента?

{% render('some_action', {'originalRequest': app.request}) %}

Это ничего не делает для контроллера:

public function actionAction($originalRequest = null) 
{
    // $originalRequest ends up just being null
}

Im принимает его из-за способа установки маршрута:

some_action:
    pattern: /stuff/
    defaults: { _controller:SomeApp:Controller:action }

Я бы предположил, что данные вроде этого не могут быть отделены от URL-адреса, поэтому какой-то способ передачи данных в отображаемый URL-адрес вообще?

EDIT (решение)

Решение было довольно простым в долгосрочной перспективе, как продемонстрировал ниже Petre Pătraşc, что в Twig все, что мне нужно было сделать, это вызвать Controller напрямую, и с этим подходом я могу передать объекты (такие как объект Request ) и Массивы вместо текстовых значений в URL.
Чтобы выполнить примерно ту же идею в контроллере, используя метод forward() от маршрутизатора, разрешите подобные эффекты без необходимости перенаправления пользователя на другую страницу.

4b9b3361

Ответ 1

Если я правильно понимаю, вы ищете следующее:

{% render "MyBundle:Controller:someAction" with { 'originalRequest' : app.request } %}

Ответ 2

используйте в качестве результата функцию рендеринга

{{ render(controller('MyBundle:ControllerName:example', {'originalRequest': app.request})) }}

а затем в вашем контроллере

public function exampleAction(Request $originalRequest)
{
    // do something
}

Ответ 3

С Symfony 2.4 вы можете получить исходный запрос через request_stack. Это позволяет избежать необходимости создания нового параметра метода.

function exampleAction() {
  $request = $this->get('request_stack')->getMasterRequest();
  //do something
}

Используйте это внимательно, так как ваши подзапросы несовместимы с ESI/обратными прокси (где подчиненный запрос также является основным запросом) http://symfony.com/blog/new-in-symfony-2-4-the-request-stack