Symfony 2: rota definida na anotação não visível pelo caminho do Twig ()
-
28-10-2019 - |
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?
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!