Symfonyを使い始めたばかりで、特定のベンダーからバンドルのリストを取得し、それらを繰り返し処理して、各デフォルトコントローラーで$ bundle-> renderSomething()関数を呼び出したいと思います。
まず、反復するバンドルのリストを取得するか、各オブジェクトを反復処理する必要があります。それを行うための最良の方法に関するアイデアはありますか?
コンソールでそれを行い、バンドル名を正しく出力する最も簡単な方法は次のとおりです。
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 | |
+------------------------------------+-----------------------------------+
container
オブジェクトを使用できる場合は、$this->container->getParameter('kernel.bundles');
によって有効なバンドルの配列を取得できます。
YourBundle::yourStaticFunction();
$this->container->getParameter('kernel.bundles')
を使用して、バンドルのリストを取得します。これは、Bundleオブジェクトではなく、バンドルクラス名のみを返します。各バンドルに目を通し、バンドルに関数yourStaticFunction()
があるかどうかを確認します。ヒント:method_exists()
を使用します。メソッドが存在する場合は、::yourStaticFunction();
を呼び出します。コンソールでは、php app/console container:debug --parameter=kernel.bundles
を使用できます
登録されたバンドルオブジェクトの非静的メソッド(クラスではない)を呼び出したい場合は、次のようにすることができます。
$kernel = $this->container->get('kernel');
$bundles = $kernel->getBundles();
$bundles['YourBundleName']->someMethod();
どこ 'YourBundleName'
はバンドルの名前であり、コンソールから呼び出すことで取得できます。
php app/console config:dump-reference