如何在symfony2中有条件地在运行时设置@Template值?

时间:2015-04-30 07:12:49

标签: symfony

我正在使用@Template注释,因为我正在使用相同的HTML和REST控制器。现在在HTML的情况下,我想在不同的条件下渲染不同的模板。有没有办法实用地设置这个值?

我不能使用$ this-> render(),因为它也会在REST请求的情况下呈现模板。

1 个答案:

答案 0 :(得分:0)

你可以直接调用模板猜测器,虽然它可能不如你希望的那么好。你可以稍微重构一下。

$guesser = $this->container->get('sensio_framework_extra.view.guesser');
if($condition) {
    $template = $guesser->guessTemplateName(array($this, 'oneAction'), $request, 'twig');
} else {
    $template = $guesser->guessTemplateName(array($this, 'twoAction'), $request, 'twig');
}
return $this->renderResponse($template, array());

这不是很重要。它只是使用请求格式来尝试猜测文件名,但你可以自己写一些更整洁的东西。