generate:bundleのformatパラメータとDependencyInjection下のExtension.phpの中身
前のエントリの続きです。
追記にも書きましたが、@hidenorigotoさんからpullリクエストをもらい、原因が判りました。ありがとうございます:-)
直接の原因
問題となった部分ですが、
を見るとsrc/Acme/AndRoleVoterBundle/DependencyInjection/AcmeAndRoleVoterExtension.phpに以下のコードが追加されています。
<?php : $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('services.yml');
「services.ymlを設定ファイルとしてロードするよ」ということですが、まあ言われてみれば当たり前っちゃ当たり前ですね。。。
何でこのような違いが出てきたのか?
ちょっと試したところ、generate:bundleのformatパラメータで指定した内容によってDependencyInjection下のExtension.phpの中身が変わるようです。
以下、formatパラメータを"yml"と"xml"でBundleを作って差分を取った結果です。
$ php app/console generate:bundle --namespace=Acme/YamlBundle --dir=src --format=yml --no-interaction $ php app/console generate:bundle --namespace=Acme/XmlBundle --dir=src --format=xml --no-interaction $ diff src/Acme/YamlBundle/DependencyInjection/AcmeYamlExtension.php src/Acme/XmlBundle/DependencyInjection/AcmeXmlExtension.php 3c3 < namespace Acme\YamlBundle\DependencyInjection; --- > namespace Acme\XmlBundle\DependencyInjection; 15c15 < class AcmeYamlExtension extends Extension --- > class AcmeXmlExtension extends Extension 25,26c25,26 < $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); < $loader->load('services.yml'); --- > $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); > $loader->load('services.xml'); $
前のエントリでも「別Bundleだとservices.ymlでうまくいってる」と書きましたが、確かにインタラクティブモードでymlを指定してました。
ちなみに、"--format=php"の場合も同様に
になりました。
ということで
「それぞれのBundleのExtensionでどのフォーマットをサポートしているのか?」を最初っから統一するのが一番面倒がなさそうですね。