2011-12-06 5 views
15

ho riscontrato un problema, sono le seguenti:Symfony 2: percorso definito nella nota non visibile dalla base al percorso di Twig()

DefaultController con una semplice azione:

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

Nel mio modello ramoscello provo da usare:

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

Ma io ottenere il seguente errore:

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 ho esplicitamente definisco un percorso "registrare" in app/config/routing.yml:

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

allora funziona bene. Non riesco a trovare documenti ragionevoli al riguardo, ho pensato che i percorsi definiti tramite annotazioni dovessero essere visibili nell'intera applicazione.

Qualche idea ragazzi?

risposta

33

Percorsi di annotazioni devono ancora essere importato in routing.yml come così:

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

questo vi dirà il percorso per la scansione del Controller directory del Acme\HelloBundle e importare tutti i percorsi.

È possibile trovare ulteriori informazioni sull'instradamento con annotazioni here. Quel link ti dirà anche come attivare i percorsi come ho mostrato sopra.

Inoltre, ho notato che l'annotazione percorso ha bisogno il parametro name per essere accessibile attraverso register utilizzando la funzione path altrimenti sarebbe stato accessibile attraverso acme_bundlename_controllername_actionname:

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

Speranza che aiuta!

+1

Mi dispiace, ho perso quella importazione nella mia nota precedente, le rotte dal mio pacchetto sono state importate proprio come hai scritto tu (risorsa: @AcmeHelloBundle ...), ma il nome mancante = "registrati" nella mia annotazione stava causando il problema . Grazie per il tuo contributo, mi ha davvero aiutato! – mkrowiarz

+0

grazie per avermi salvato alcuni anni di vita :) – GorillaApe

+0

http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html – Mike