【发布时间】:2014-08-15 18:51:14
【问题描述】:
我正在尝试在 Symfony2 中编写包的语义配置。我已经使用 YAML (spu.yml) 准备了一个配置文件:
spu:
modules:
spu-module:
reuqires: []
path: modules/spu-module.js
然后我将它加载到扩展文件(DependencyInjection/spuExtension.php)中:
namespace Gig\SpuBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
class spuExtension 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( 'services.yml' );
$loader->load( 'spu.yml' );
}
}
而这个扩展的配置类()DependencyInjection/Configuration.php)是:
namespace Gig\SpuBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root( 'spu' );
$rootNode
->children()
->arrayNode('modules')
->isRequired()
->prototype('array')
->end()
->end();
return $treeBuilder;
}
}
验证配置时出现错误:
[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException] 必须配置路径“spu”处的子节点“modules”。
我做错了什么?
【问题讨论】:
标签: php symfony configuration dependency-injection