升级到 Symfony 2.6 会导致 ApplicationSonataUserExtension 出现问题


Upgrading to Symfony 2.6 causes issue with ApplicationSonataUserExtension

我目前正在尝试升级到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;
相关文章:
  • 没有找到相关文章