別のバンドルに依存するバンドルを開発しています。
基本バンドルがインストールされていない場合に対処するために、コントローラー内で「bundle_exists()」関数を実行したいと思います。
問題は、インストールされているバンドルのリストを取得するにはどうすればよいか、またはバンドルの名前 (最終的にはバージョンも) を確認するにはどうすればよいかということです。
ありがとう。
別のバンドルに依存するバンドルを開発しています。
基本バンドルがインストールされていない場合に対処するために、コントローラー内で「bundle_exists()」関数を実行したいと思います。
問題は、インストールされているバンドルのリストを取得するにはどうすればよいか、またはバンドルの名前 (最終的にはバージョンも) を確認するにはどうすればよいかということです。
ありがとう。
@Rooneylの答えに加えて:
このようなチェックを行うのに最適な場所は、DI 拡張機能の内部です(例: AcmeDemoExtension
)。これは、コンテナーがビルドされてキャッシュにダンプされると実行されます。リクエストごとにそのようなことを確認する必要はありません (コンテナはキャッシュされている間は変更されません)。キャッシュが遅くなるだけです。
// ...
class AcmeDemoExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$bundles = $container->getParameter('bundles');
if (!isset($bundles['YourDependentBundle'])) {
throw new \InvalidArgumentException(
'The bundle ... needs to be registered in order to use AcmeDemoBundle.'
);
}
}
}
Andrey からの質問: How do I get a list of bundles in symfony2?
登録されたバンドル オブジェクト (クラスではない) の非静的メソッドを呼び出したい場合は、次の操作を実行できます。
$kernel = $this->container->get('kernel');
$bundles = $kernel->getBundles();
$bundles['YourBundleName']->someMethod();
コンソール'YourBundleName'
から呼び出して取得できるバンドルの名前は次のとおりです。
php app/console config:dump-reference