Symfony 2: маршрут, определенный в аннотации, не виден из пути Twig () - PullRequest
15 голосов
/ 07 декабря 2011

Я столкнулся с проблемой, есть следующее:

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.

Когда я явно определяю маршрут регистрации в app / config / routing.yml:

register:
  pattern:  /register
  defaults: { _controller: EBTSCustomerBundle:Controller:Default:index }

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

Есть идеи, ребята?

1 Ответ

33 голосов
/ 07 декабря 2011

Маршруты по аннотациям по-прежнему необходимо импортировать в routing.yml следующим образом:

AcmeHelloBundle:
  resource: "@AcmeHelloBundle/Controller"
  type: annotation

Это даст указание маршрутизации сканировать каталог Controller Acme\HelloBundle и импортировать все маршруты.

Более подробную информацию о маршрутизации вы можете найти с аннотациями здесь .Эта ссылка также расскажет вам, как активировать маршруты, как я показал выше.

Кроме того, я заметил, что ваша аннотация маршрута требует, чтобы параметр name был доступен через register, в противном случае с помощью функции pathк нему можно получить доступ через acme_bundlename_controllername_actionname:

@Route("/register", name="register")

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

...