我目前正在尝试升级到Symfony 2.6。一切都很顺利,除了我在运行 composer.phar 更新后收到此错误
[Symfony'Component'Debug'Exception'ContextErrorException]
Warning: Missing argument 1 for Symfony'Bundle'FrameworkBundle'DependencyInjection'Configuration::__construct(), called in src/Application/Sonata/UserB
undle/DependencyInjection/ApplicationSonataUserExtension.php on line 23 and defined
但是,Symfony'Bundle'FrameworkBundle'DependencyInjection'Configuration
中没有__construct()
功能...
我在ApplicationSonataUserExtension.php
的代码是:
<?php
namespace Application'Sonata'UserBundle'DependencyInjection;
use Symfony'Bundle'FrameworkBundle'DependencyInjection'Configuration;
use Symfony'Component'DependencyInjection'ContainerBuilder;
use Symfony'Component'Config'FileLocator;
use Symfony'Component'HttpKernel'DependencyInjection'Extension;
use Symfony'Component'DependencyInjection'Loader;
/**
* This is the class that loads and manages your bundle configuration
*
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
*/
class ApplicationSonataUserExtension extends Extension
{
/**
* {@inheritDoc}
*/
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');
}
}
我真的不知道...
与 Symfony 2.5 不同,2.6 实际上在 Symfony'Bundle'FrameworkBundle'DependencyInjection'Configuration
中具有__construct()
方法,根据此,它的参数表示调试模式。因此,将布尔变量添加到Configuration
应该可以解决问题。
$configuration = new Configuration(TRUE); //or FALSE, if it's in prod
要轻松自动获取调试模式,您可以使用以下内容:
$env = $container->getParameter("kernel.environment");
$debug = ( $env === 'dev' ) ? TRUE : FALSE;