У вас есть два варианта:
1) Использовать SensioFrameworkExtraBundle - позволяет использовать аннотацию @Template. (Входит в SE).
2) Напишите свой собственный метод. Я нахожу раздражающим писать @Template и любые аннотации в контроллерах каждый раз, поэтому я добавил этот метод в базовый контроллер (это только пример, изучите его перед использованием в производстве):
public function view(array $parameters = array(), Response $response = null, $extension = '')
{
$extension = !empty($extension) ? $extension : $this->templateExtension;
$view = ViewTemplateResolver::resolve($this->get('request')->get('_controller'), get_called_class());
return $this->render($view . '.' . $extension, $parameters, $response);
}
class ViewTemplateResolver
{
public static function resolve($controller, $class)
{
$action = preg_replace('/(.*?:|Action$)/', '', $controller);
if (preg_match('~(\w+)\\\\(\w+Bundle).*?(\w+(?=Controller$))~', $class, $name)) {
return implode(':', array($name[1] . $name[2], $name[3], $action));
}
}
}
Теперь в контроллере мы можем сделать: return $this->view();