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

时间:2012-04-03 09:57:46

标签: symfony bundle

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

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

5 个答案:

答案 0 :(得分:31)

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

Symfony 2

php app/console config:dump-reference

Symfony 3

php bin/console config:dump-reference

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

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              |                                   |
+------------------------------------+-----------------------------------+

答案 1 :(得分:14)

如果您有container个对象,那么您可以通过$this->container->getParameter('kernel.bundles');

获取已启用的数据包数组

答案 2 :(得分:5)

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

答案 3 :(得分:3)

在控制台中,您可以使用php app/console container:debug --parameter=kernel.bundles

答案 4 :(得分:1)

如果您想调用已注册捆绑包对象的非静态方法(非类),则可以执行以下操作:

$kernel = $this->container->get('kernel');
$bundles = $kernel->getBundles();
$bundles['YourBundleName']->someMethod();

其中'YourBundleName'是您的捆绑包的名称,您可以通过从控制台调用来获取:

php app/console config:dump-reference