Pergunta

Encontrei um problema, o seguinte:

DefaultController com uma ação simples:

/**
 * @Route("/register")
 * @Template
 */
public function indexAction() {
    $oForm = $this->createForm(new RegisterType());
    return array(
        'form'  => $oForm->createView()
    );
}

No meu modelo twig tento usar:

<form action="{{ path('register') }}" method="post"></form>

Mas recebo o seguinte erro:

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.

Quando eu defino explicitamente uma rota de "registro" em app / config / routing.yml:

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

Então funciona bem.Não consigo encontrar nenhum documento razoável sobre isso, pensei que as rotas definidas por meio de anotações deveriam ser visíveis em todo o aplicativo.

Alguma ideia, pessoal?

Foi útil?

Solução

Rotas por anotações ainda precisam ser importadas para routing.yml assim:

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

Isso dirá ao roteamento para verificar o diretório Controller do Acme\HelloBundle e importar todas as rotas.

Você pode encontrar mais informações sobre roteamento com anotações aqui .Esse link também informará como ativar as rotas, conforme mostrado acima.

Além disso, percebi que a sua anotação de rota precisa do parâmetro name para ser acessível por meio de register usando a função path, caso contrário, seria acessada por meio de acme_bundlename_controllername_actionname:

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

Espero que ajude!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top