¿Cómo puedo detectar en qué paquete estoy?¿Cómo obtener el paquete actual en Symfony 2?
por ejemplo, cuando estoy en web.com/participants/list, quiero leer "participantes".
¿Cómo puedo detectar en qué paquete estoy?¿Cómo obtener el paquete actual en Symfony 2?
por ejemplo, cuando estoy en web.com/participants/list, quiero leer "participantes".
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
Bueno, usted puede obtener el controlador de la ruta actual,
$request->attributes->get('_controller');
Puede analizar el nombre del paquete desde él.
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') }}
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') }}
bastante seguro '-> attributes-> get ('_ template')' no está disponible si no usa la anotación @template. –
puede usar '$ request-> attributes-> get ('_ controller');' o '$ this-> getRequest() -> attributes-> get ('_ controller');' en el controlador para tomar el nombre del controlador. –
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? :) –