получение аргументов в контроллере при вызове его из шаблона twig


Я пытаюсь получить доступ к переменным в моем контроллере, которые я установил в своей функции, вызывающей в twig. На самом деле это выглядит так:

{{ render(controller('AppBundle:Domain:show', {
        'test': 'ok'
})) }}

И в моем контроллере это выглядит так:

public function showAction(Request $request, $test = null)
{
    $test = $test ? $test : 'notOk';
    var_dump($test); // result "notOK"
    die;
}

Моя цель состоит в том, чтобы var_dump($test); привело к "ок"

Author: Gopal Joshi, 2016-03-22

2 answers

Второй аргумент controller() в Twig - это массив атрибутов запроса.

Https://github.com/symfony/twig-bridge/blob/master/Extension/HttpKernelExtension.php#L81

Так что:

{{ render(controller('AppBundle:Domain:show', {
   'test': 'ok'
})) }}

Должно быть доступно:

public function showAction(Request $request)
{
    return new Response($request->attributes->get('test'));
}
 1
Author: eRIZ, 2016-03-22 13:42:42

Вы должны вернуть ответ от контроллера, var_dump не будет отображаться в вашем отрисованном шаблоне:

public function showAction(Request $request, $test = null)
{
    $test = $test ? $test : 'notOk';
    return new Response($test);
}

Кроме того, что ваш пример работает для меня так, как задумано

 0
Author: Andras, 2016-03-22 14:04:27