Использование соглашения о конфигурации в контроллерах / представлениях Symfony2 - PullRequest
1 голос
/ 28 марта 2012

У меня есть следующий контроллер Symfony:

/** 
 * Says thanks to the user for signing up.
 *
 * @Route("/thanks", name="user")
 * @Template()
 */
public function thanksAction()
{   
  return $this->render('VNNPressboxBundle:User:thanks.html.twig');
}

Если я не включаю оператор return, я получаю сообщение об ошибке, в котором говорится, что контроллер должен вернуть ответ. Интересно, что мне нужно вручную указать, какой шаблон нужно использовать в моем действии, учитывая, что Symfony может легко выяснить это на основе моего контроллера и действия. Кроме того, так работает Symfony 1.x.

Я должен представить, что мне чего-то не хватает. Не похоже, что они применили бы соглашение к концепции конфигурации в Symfony 1.x, а затем отказались от него в Symfony> = 2.0.

Можно ли сказать Symfony, чтобы выяснить, какой шаблон использовать, основываясь на моем контроллере и действии, и если да, то как?

Ответы [ 2 ]

6 голосов
/ 28 марта 2012

Вы должны что-то вернуть. Вы используете аннотацию @Template, поэтому вам не нужно отображать ответ, но вам все равно придется возвращать массив параметров для шаблона (в вашем случае пустой):

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

/** 
 * Says thanks to the user for signing up.
 *
 * @Route("/thanks", name="user")
 * @Template()
 */
public function thanksAction()
{   
  return array();
}

Подробнее о аннотации @Template в документации: http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/view.html

P.S. Не сравнивайте Symfony 1.x с Symfony 2.x. Это две разные рамки. Symfony 2 предпочитает быть явным, а не магией.

1 голос
/ 28 марта 2012

Вернуть массив.В вашем случае это будет пустой массив, но обычно вы заполняете его переменными, которые хотите передать в шаблон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...