我建立一个扩展,从所有已安装的加载包配置文件。
我的分机是这样的:
namespace Acme\MenuBundle\DependencyInjection;
// use ...
use Acme\MenuBundle\DependencyInjection\Configuration;
class AcmeMenuExtension extends Extension {
public function load(array $configs, ContainerBuilder $container) {
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$finder = new \Symfony\Component\Finder\Finder();
$finder
->directories()
->in($container->getParameter('kernel.root_dir') . '/../src/*/*Bundle/Resources')
->path('config');
$possibleLocations = array();
foreach ($finder as $c_dir) {
$possibleLocations[] = $c_dir->getPathName();
}
$loader = new Loader\YamlFileLoader($container, new FileLocator($possibleLocations));
$loader->load('menu.yml');
}
}
再有就是我的(很简单)配置类:我将在未来增加更复杂的树,但现在我想它这个工作:
namespace Acme\MenuBundle\DependencyInjection;
// use ...
class Configuration implements ConfigurationInterface {
public function getConfigTreeBuilder() {
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('mw_menu');
$rootNode
->children()
->scalarNode('mw_menu')->defaultValue('')->end()
->end();
return $treeBuilder;
}
}
为了测试我只放在“menu.yml”文件中的当前MenuBundle \资源\ CONFIG这个里面的内容:
# file: src\Acme\MenuBundle\Resource\config\menu.yml
mw_menu: "some teststring"
对于手动测试我使用testAction在默认控制器,它实际上什么也不做,但呈现一个空的模板。
无论如何,我得到这个错误:
InvalidArgumentException: There is no extension able to load the configuration for
"mw_menu" (in {path to symfony}/app/../src/Acme/MenuBundle/Resources\config\menu.yml).
Looked for namespace "mw_menu", found none
我该如何解决呢?
从我目前了解,Symfony的注意到在配置文件中的关键“mw_menu”,但无法找到匹配的配置。
:我沿着食谱的文章曾如何公开语义配置?
请注意:我知道KNP菜单捆绑和类似捆绑的,但我确实想实现一个菜单自己。
此外,我发现了这个通知。 他是正确的?