register - ¿Cómo obtengo una lista de paquetes en symfony2/symfony3?
symfony get service name (5)
- Puede definir una función estática en cada paquete. Ej:
YourBundle::yourStaticFunction();
- Use
$this->container->getParameter(''kernel.bundles'')
para obtener la lista de paquetes. Esto solo devuelve los nombres de clase de paquete en lugar del objeto de paquete. Ir a través de cada paquete, compruebe si el paquete tiene la funciónyourStaticFunction()
, Sugerencia: Usemethod_exists()
. Si el método existe, llame a::yourStaticFunction();
Acabo de comenzar a usar Symfony y me gustaría obtener una lista de paquetes de un proveedor en particular, iterar a través de ellos y llamar a la función $ paquete-> renderSomething () en cada controlador predeterminado.
En primer lugar, necesito obtener la lista de paquetes para iterar, o iterar a través de cada objeto. ¿Alguna idea sobre la mejor manera de hacer eso?
En la consola puede usar la php app/console container:debug --parameter=kernel.bundles
La forma más fácil de hacerlo en la consola y que genera nombres de paquetes correctamente es:
Symfony 2
php app/console config:dump-reference
Symfony 3
php bin/console config:dump-reference
La clave aquí es no proporcionar ninguna opción o argumento. En este caso, el comando simplemente genera todos los paquetes disponibles:
Available registered bundles with their extension alias if available:
+------------------------------------+-----------------------------------+
| Bundle name | Extension alias |
+------------------------------------+-----------------------------------+
| FrameworkBundle | framework |
| SecurityBundle | security |
| TwigBundle | twig |
| MonologBundle | monolog |
| SwiftmailerBundle | swiftmailer |
| DoctrineBundle | doctrine |
| AsseticBundle | assetic |
| GearmanBundle | gearman |
| SMMemcacheBundle | sm_memcache |
| PrestaSitemapBundle | presta_sitemap |
| DoctrineCacheBundle | doctrine_cache |
| CybernoxAmazonWebServicesBundle | cybernox_amazon_web_services |
| FOSFacebookBundle | fos_facebook |
| HWIOAuthBundle | hwi_oauth |
| FkrSimplePieBundle | fkr_simple_pie |
| RMSPushNotificationsBundle | rms_push_notifications |
| RobertoTruToInlineStyleEmailBundle | roberto_tru_to_inline_style_email |
| InsomniaMaxMindGeoIpBundle | insomnia_max_mind_geo_ip |
| EWZRecaptchaBundle | ewz_recaptcha |
| MopaBootstrapBundle | mopa_bootstrap |
| JanThomas89MailSafeBundle | jan_thomas89_mail_safe |
| WebProfilerBundle | web_profiler |
| SensioDistributionBundle | sensio_distribution |
| SensioGeneratorBundle | |
+------------------------------------+-----------------------------------+
Si desea llamar a un método no estático de objeto de paquete registrado ( no a clase ), puede hacer lo siguiente:
$kernel = $this->container->get(''kernel'');
$bundles = $kernel->getBundles();
$bundles[''YourBundleName'']->someMethod();
Donde ''YourBundleName''
es el nombre de su paquete, que puede obtener llamando desde la consola:
php app/console config:dump-reference
Si tiene container
objeto container
disponible, puede obtener una matriz de los paquetes habilitados por $this->container->getParameter(''kernel.bundles'');