2012-05-11 18 views

Respuesta

7

AFAIK todavía no es posible (al menos de una manera fácil). Deberías usar la reflexión. Escribí un servicio rápido y sucio para obtener el nombre del paquete ang guess entity/repository/form names basado en mis convenciones. Puede tener errores, échele un vistazo a: http://pastebin.com/BzeXAduH

Funciona solo cuando pasa una clase que hereda de Controller (Symfony2). Uso:

entity_management_guesser: 
    class: Acme\HelloBundle\Service\EntityManagementGuesser 

En su controlador:

$guesser = $this->get('entity_management_guesser')->inizialize($this); 

$bundleName = $guesser->getBundleName();  // Acme/HelloBundle 
$bundleShort = $guesser->getBundleShortName(); // AcmeHelloBundle 

Otra posibilidad sería el uso del kernel para obtener todos los paquetes: Get a bundle name from an entity

+0

Ha sido de 2,5 años desde la respuesta, nadie ha oído hablar de cualquier avance aún sobre la cuestión? :) ¿Hay una manera "más limpia" de encontrar el nombre del paquete? :) –

5

Bueno, usted puede obtener el controlador de la ruta actual,

$request->attributes->get('_controller'); 

Puede analizar el nombre del paquete desde él.

3

Usted puede obtener el nombre del paquete en el controlador simplemente así:

// Display "SybioCoreBundle" 
echo $this->getRequest()->attributes->get('_template')->get('bundle'); 

Y dentro de una plantilla ramita:

{{ app.request.get('_template').get('bundle') }} 
15

Con el fin de obtener el nombre paquete en el controlador:

// Display "AcmeHelloBundle" 
echo $this->getRequest()->attributes->get('_template')->get('bundle'); 

Y dentro de una plantilla Twig:

{{ app.request.get('_template').get('bundle') }} 

Con el fin de obtener el nombre controlador en el controlador:

// Display "Default" 
echo $this->getRequest()->attributes->get('_template')->get('controller'); 

Y dentro de una plantilla Twig:

{{ app.request.get('_template').get('controller') }} 

En Para obtener el nombre de acción en el controlador:

// Displays "index" 
echo $this->getRequest()->attributes->get('_template')->get('name'); 

Y dentro de una plantilla Twig:

{{ app.request.get('_template').get('name') }} 
+6

bastante seguro '-> attributes-> get ('_ template')' no está disponible si no usa la anotación @template. –

+0

puede usar '$ request-> attributes-> get ('_ controller');' o '$ this-> getRequest() -> attributes-> get ('_ controller');' en el controlador para tomar el nombre del controlador. –