Symfony 2: маршрут, определенный в аннотации, не видимой с помощью пути Twig()
У меня возникла проблема:
DefaultController с простым действием:
/**
* @Route("/register")
* @Template
*/
public function indexAction() {
$oForm = $this->createForm(new RegisterType());
return array(
'form' => $oForm->createView()
);
}
В моем шаблоне ветки я стараюсь использовать:
<form action="{{ path('register') }}" method="post"></form>
Но я получаю следующую ошибку:
An exception has been thrown during the rendering of a template ("Route "register" does not exist.") in EBTSCustomerBundle:Default:index.html.twig at line 2.
Когда я явно определяю маршрут "register" в app/config/routing.yml:
register:
pattern: /register
defaults: { _controller: EBTSCustomerBundle:Controller:Default:index }
Тогда он отлично работает. Не могу найти никаких разумных документов об этом, я думал, что маршруты, определенные через аннотации, должны быть видны во всем приложении.
Любые идеи ребята?
Ответы
Ответ 1
Маршруты по аннотациям все равно необходимо импортировать в routing.yml следующим образом:
AcmeHelloBundle:
resource: "@AcmeHelloBundle/Controller"
type: annotation
Это скажет маршрутизации для сканирования каталога Controller
Acme\HelloBundle
и импорта всех маршрутов.
Дополнительную информацию о маршрутизации можно найти с аннотациями здесь. Эта ссылка также расскажет вам, как активировать маршруты, как показано выше.
Кроме того, я заметил, что для вашей аннотации маршрута параметр name
должен быть доступен через register
с помощью функции path
, иначе он будет доступен через acme_bundlename_controllername_actionname
:
@Route("/register", name="register")
Надеюсь, что это поможет!