2015-04-30 2 views
1

Я использую аннотацию @Template, поскольку я использую тот же контроллер для HTML и REST. Теперь в случае HTML я хочу отображать разные шаблоны в разных условиях. Есть ли способ установить это значение прагматично?Как установить значение @Template во время выполнения условно в symfony2?

Я не могу использовать $ this-> render(), потому что он будет отображать шаблон в случае запроса REST.

ответ

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()); 

Это не очень. Он просто использует формат запроса, чтобы попытаться угадать имя файла, но вы, вероятно, можете написать что-то опрятное.

Смежные вопросы