services register name create symfony bundle

register - ¿Cómo obtengo una lista de paquetes en symfony2/symfony3?



symfony get service name (5)

  1. Puede definir una función estática en cada paquete. Ej: YourBundle::yourStaticFunction();
  2. 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ón yourStaticFunction() , Sugerencia: Use method_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'');