如何获取symfony2/symfony3中的包列表?

Mik*_*ike 17 bundle symfony

我刚刚开始使用symfony,我想获得一个特定供应商的捆绑列表,迭代它们并在每个默认控制器上调用$ bundle-> renderSomething()函数.

首先,我需要获取bundle的列表来迭代或迭代每个对象.有关最佳方法的任何想法吗?

men*_*nte 34

在控制台中执行此操作并且正确输出包名称的最简单方法是:

Symfony 2

php app/console config:dump-reference
Run Code Online (Sandbox Code Playgroud)

Symfony 3

php bin/console config:dump-reference
Run Code Online (Sandbox Code Playgroud)

这里的关键是不提供任何选项或参数.在这种情况下,该命令只输出所有可用的包:

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              |                                   |
+------------------------------------+-----------------------------------+
Run Code Online (Sandbox Code Playgroud)


Mun*_*Das 14

如果您有container可用的对象,那么您可以获取已启用的包的数组$this->container->getParameter('kernel.bundles');


Tuo*_* Le 5

  1. 您可以在每个包中定义静态函数.例如:YourBundle::yourStaticFunction();
  2. 使用$this->container->getParameter('kernel.bundles')得到包的列表.这只返回bundle类名而不是Bundle对象.浏览每个包,检查包是否具有该功能yourStaticFunction(),提示:使用method_exists().如果方法存在,则调用::yourStaticFunction();