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")

Надеюсь, что это поможет!