2016-07-13 6 views
1

似たような質問がここに数回ありましたが、残念ながらそこに必要なヘルプを見つけることができませんでした。"my_namespace"の設定を読み込める拡張子がありません

私はSymfony(3.1)でカスタム拡張クラスを作成しようとしています。私は料理[12]を次のですが、私がしようとするものに関係なく、私はエラーにYamlFileLoader.phpライン404で

InvalidArgumentExceptionを得る:「czechnology_tools」の設定をロードすることができ拡張子(ではありません[path_to_project] \ src \ Czechnology \ ToolsBundle \ DependencyInjection /../ Resources/config \ holidays.yml)。私は現在、ちょうど持って、YAMLファイルで

<?php 

namespace Czechnology\ToolsBundle\DependencyInjection; 

// use ... 

class Configuration implements ConfigurationInterface 
{ 
    public function getConfigTreeBuilder() 
    { 
     $treeBuilder = new TreeBuilder(); 
     $rootNode = $treeBuilder->root('czechnology_tools'); 

     $rootNode 
      ->children() 
       ->scalarNode('calendar')->defaultValue('default')->end() 
      ->end() 
     ; 

     return $treeBuilder; 
    } 
} 

<?php 

namespace Czechnology\ToolsBundle\DependencyInjection; 

// use ... 

class CzechnologyToolsExtension extends Extension 
{ 
    public function load(array $configs, ContainerBuilder $container) 
    { 
     $configuration = new Configuration(); 
     $config = $this->processConfiguration($configuration, $configs); 
     $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); 
     $loader->load('holidays.yml'); 
    } 
} 

と同じディレクトリに対応するConfiguration.php:なし

クラスCzechnologyToolsExtensionを見つけ、名前空間 "czechnology_tools" を探しましたそれがまったく動作するようにしようとしています。 holidays.yml

czechnology_tools: 
    calendar: foo 

私はコンソールでデバッグしようとすると、私はこれを取得:

$ bin/console config:dump-reference czechnology_tools 
# Default configuration for extension with alias: "czechnology_tools" 
czechnology_tools: 
    calendar:    default 

だから、拡張子が正しい別名で、正しく設定されていることのようです。しかし、私はまだ例外を乗り越えることはできません。何かヒント?

+0

は、AppKernelでバンドルが有効になっています。 ? ... – Drmjo

+0

@Drmjoはい、バンドルはカーネルに登録されており、その中のすべてのサービスが正常に動作します。 – Czechnology

+0

設定名を調べることができます。私はこれを何度も実行してきましたが、symfonyはほとんどの場合、別の名前を期待しています。 app/config.ymlにconfig 'czechnology_tools'を設定してみてください。 'holidays.yml'を一時的に読み込んでいる行にコメントを付けます。 '名前空間を探しました" czechnology_tools "、<登録された名前空間のリスト>を見つけました。登録された名前空間であなたの設定名を探します。 – Broncha

答えて

0

私の推測では、あなたのバンドルアーキテクチャのどこかに、タイプミス(意図的なもの、拡張子とは異なる名前のバンドルクラス...など)があります。

まず、あなたのバンドルは、使用しようとしている1の異なるエイリアスが表示された場合、あなたは次のような行を含む出力を持つべきである見るために、bin/console debug:configを実行します。

CzechnologyToolsBundle | [良いエイリアス]

は、それはあなたのバンドル・クラスに以下を追加し、まったく表示されない場合:

namespace Czechnology\ToolsBundle; 

use Czechnology\ToolsBundle\DependencyInjection\CzechnologyToolsExtension; 

class CzechnologyToolsBundle extends Bundle 
{ 
    public function getContainerExtension() 
    { 
     return new CzechnologyToolsExtension(); 
    } 
} 

プラス、あなたのバンドル拡張に次のメソッドを追加します。

/** 
* {@inheritdoc} 
*/ 
public function getAlias() 
{ 
    return 'czechnology_tools'; 
} 

問題を解決したいと考えています。

+0

ヒントをありがとう。 consoleコマンドの出力は上記のコメントと同じですが、私のバンドルのエイリアスはそこにあります。また、前もってgetAlias()メソッドを試してみました。私は 'getContainerExtension()'メソッドをそこに追加しようとしましたが、同じエラーが続いています。 – Czechnology

関連する問題