2015-01-16 9 views
9

Ho un percorso definito con un'annotazione, in questo modo:usando le costanti di classe in Symfony instradamento

/** 
* @Route("/doSomething/{param}", name="route_name", defaults={"param"=1}) 
*/ 

E 'possibile utilizzare una classe costante al posto di questo hardcoded '1', come:

/** 
* @Route("/doSomething/{param}", name="route_name", defaults={"param"=MyBundle:MyEntity:DEFAULT_TYPE}) 
*/ 

(naturalmente il fallisce sopra)

+0

Eventuali duplicati: http://stackoverflow.com/questions/14713913/symfony2- use-php-class-constant-in-yaml-config Anche se parlano di 'YAML' invece di annotazioni, la conclusione è che solo' XML' supporta l'iniezione costante –

risposta

15

Sì, è possibile utilizzare le costanti nelle annotazioni, basta usare il FQN della classe:

/** 
* @Route("/doSomething/{param}", name="route_name", defaults={"param"=Namespace\MyBundle\MyEntity::DEFAULT_TYPE}) 
*/ 

Se siete nello stesso spazio dei nomi, o si importa la classe che detiene la costante, è possibile accorciare esso:

use Namespace\MyBundle\MyEntity; 

/** 
* @Route("/doSomething/{param}", name="route_name", defaults={"param"=MyEntity::DEFAULT_TYPE}) 
*/ 
+0

Perché downvote? Funziona. – Gerry

+0

Scusami, ho problemi di rete e ho fatto qualcosa di sbagliato. Ho upvoted la tua risposta ora! Grazie, buon consiglio, tuttavia, c'è solo una cosa negativa: devi definire FQN, in realtà ... Comunque, questo funziona 0K! – Nevertheless

+3

Bene, potresti importare la classe nel tuo codice PHP per accorciarla. – Gerry

Problemi correlati