web-dev-qa-db-ja.com

symfony2 / symfony3のバンドルのリストを取得するにはどうすればよいですか?

Symfonyを使い始めたばかりで、特定のベンダーからバンドルのリストを取得し、それらを繰り返し処理して、各デフォルトコントローラーで$ bundle-> renderSomething()関数を呼び出したいと思います。

まず、反復するバンドルのリストを取得するか、各オブジェクトを反復処理する必要があります。それを行うための最良の方法に関するアイデアはありますか?

19
Mike

コンソールでそれを行い、バンドル名を正しく出力する最も簡単な方法は次のとおりです。

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

containerオブジェクトを使用できる場合は、$this->container->getParameter('kernel.bundles');によって有効なバンドルの配列を取得できます。

14
Mun Mun Das
  1. 各バンドルで静的関数を定義できます。例:YourBundle::yourStaticFunction();
  2. $this->container->getParameter('kernel.bundles')を使用して、バンドルのリストを取得します。これは、Bundleオブジェクトではなく、バンドルクラス名のみを返します。各バンドルに目を通し、バンドルに関数yourStaticFunction()があるかどうかを確認します。ヒント:method_exists()を使用します。メソッドが存在する場合は、::yourStaticFunction();を呼び出します。
5
Tuong Le

コンソールでは、php app/console container:debug --parameter=kernel.bundlesを使用できます

3
Serge Kvashnin

登録されたバンドルオブジェクトの非静的メソッド(クラスではない)を呼び出したい場合は、次のようにすることができます。

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

どこ 'YourBundleName'はバンドルの名前であり、コンソールから呼び出すことで取得できます。

php app/console config:dump-reference
1
Andrey Rudenko