从twig模板调用时在控制器中获取参数

时间:2016-03-22 11:02:57

标签: php symfony symfony-2.7

我正在尝试访问我在我的函数中设置的控制器中的变量。它实际上看起来像这样:

{{ 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);导致'ok'

2 个答案:

答案 0 :(得分:1)

Twig中controller()的第二个参数是一个请求属性数组。

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 :(得分:0)

您必须从控制器返回响应,var_dump不会显示在渲染模板中:

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

除此之外,您的示例按预期为我工作