我刚刚开始使用symfony,我想获得一个特定供应商的捆绑包列表,遍历它们并在每个默认控制器上调用$ bundle-> renderSomething()函数。
首先,我需要获取bundle的列表来迭代或迭代每个对象。有关最佳方法的任何想法吗?
答案 0 :(得分:31)
在控制台中执行此操作并且正确输出包名称的最简单方法是:
php app/console config:dump-reference
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)
YourBundle::yourStaticFunction();
$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