按照在symfony2中加载自定义配置文件中发布的建议,我陷入了命名空间问题。
在'src'AppBundle'DependencyInjection
我有两个文件:
AppExtension.php:
<?php
namespace AppBundle'DependencyInjection;
use Symfony'Component'DependencyInjection'ContainerBuilder;
use Symfony'Component'Config'FileLocator;
use Symfony'Component'DependencyInjection'Extension'PrependExtensionInterface;
use Symfony'Component'HttpKernel'DependencyInjection'Extension;
use Symfony'Component'DependencyInjection'Loader;
use Symfony'Component'Validator'Tests'Fixtures'Entity;
use AppBundle'DependencyInjection'Configuration;
/**
* This is the class that loads and manages your bundle configuration
*/
class AppExtension extends Extension
{
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$container->setParameter('kh', $config['kh']);
$loader = new Loader'YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('general.yml'); # another file of yours
}
}
和 Configuration.php :
<?
namespace AppBundle'DependencyInjection;
use Symfony'Component'Config'Definition'Builder'TreeBuilder;
use Symfony'Component'Config'Definition'ConfigurationInterface;
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('kh');
$rootNode
->children()
->arrayNode('tags')
->prototype('array')
->children()
->scalarNode('name')->isRequired()->end();
->scalarNode('role')->isRequired()->end();
->scalarNode('priority')->isRequired()->end();
->scalarNode('label')->isRequired()->end();
->end();
->end();
->end();
return $treeBuilder;
}
}
似乎我把文件命名为执行文件时犯了一些错误:
php app/console cache:clear --env=prod
结果:
PHP致命错误:类'AppBundle'DependencyInjection'Configuration'未在/var/www/dev.investmentopportunities.pl/src/AppBundle/DependencyInjection/AppExtension.php第22行找到[2015-08-02 10:39:36] php。紧急:致命错误:类'AppBundle'DependencyInjection'Configuration'未找到{"type":1,"file":"/var/www/dev. investmentinvestments .pl/src/AppBundle/DependencyInjection/AppExtension.php","line":22,"level":6143,"stack":[]}
不幸的是,我有一个问题,找到自己的错误。我已经尝试重命名文件,但仍然发生错误。你能告诉我我做错了什么吗?
更新1:正如@San Thapa所建议的,我也试图删除"use"命令。结果是:
PHP致命错误:类'AppBundle'DependencyInjection'Configuration'未在/var/www/dev.investmentopportunities.pl/src/AppBundle/DependencyInjection/AppExtension.php第21行找到[2015-08-02 12:05:27] php。紧急:致命错误:类'AppBundle'DependencyInjection'Configuration'未找到{"type":1,"file":"/var/www/dev. investment机会.pl/src/AppBundle/DependencyInjection/AppExtension.php","line":21,"level":6143,"stack":[]}
组件[Symfony ' '调试' ' ClassNotFoundException异常)试图从命名空间"AppBundle' dependencies"加载类"Configuration"yInjection"。你是不是忘记用use了?"Symfony '包' TwigBundle '依赖encyInjection '配置"、"Symfony '包' DebugBundle ' DependencyInjecti在配置"、"Symfony ' '包' WebProfilerBundle ' DependencyInjection '有限公司nfiguration"、"Symfony '捆捆' FrameworkBundle '测试功能' ' '的undle ' DependencyInjection '配置"、"Symfony '包' FrameworkBundle ' DependencyInjection '配置"、"包Genemu ' ' FormBundle ' DependencyInje"Doctrine'ORM'Configuration"、"Doctrine'DBAL' Configuration"、"Doctrine'ORM'Configuration"、"信息主义'包' DoctrineCacheBundle ' DependencyInjection ' Configurat离子"、"Symfony '包' SwiftmailerBundle ' DependencyInjection '配置","Symfony '包' MonologBundle ' DependencyInjection '配置","Symfony包' ' AsseticBundle ' DependencyInjection '配置"、"Sensio赞助'包' FrameworkExtraBundle ' DependencyInjection '配置"、"PUGX ' AutocompleterBundle ' DependencyInjection '配置"、"Knp '包' PaginatorBundle '开掘dencyInjection '配置"、"安全系数' UserBundle ' DependencyInjection ' Configur或"Doctrine'Bundle'DoctrineBundle'DependencyInjection'Configuration"?
从浏览器访问网页似乎有点奇怪,但没有导致任何错误。
刚刚添加到Configuration.php的第一行:
<?php
并删除分号:
$rootNode
->children()
->arrayNode('tags')
->prototype('array')
->children()
->scalarNode('name')->isRequired()->end()
->scalarNode('role')->isRequired()->end()
->scalarNode('priority')->isRequired()->end()
->scalarNode('label')->isRequired()->end()
->end()
->end()
->end();
我不确定结构…