2014-12-13 2 views
0

В настоящее время я пытаюсь перейти на Symfony 2.6. Все прошло гладко, за исключением того, что я получил эту ошибку после запуска обновления composer.pharОбновление до Symfony 2.6 вызывает проблемы с ApplicationSonataUserExtension

[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 

Однако нет __construct() функции Symfony\Bundle\FrameworkBundle\DependencyInjection\Configuration ...

кода у меня в 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'); 
    } 
} 

у меня действительно нет подсказки ...

+0

Пожалуйста, попробуйте 'var_dump ($ RootNode)' в 'Конфигурация :: getConfigTreeBuilder()', где-то на строка 34-35, после того, как она будет объявлена. Что у него есть? – Nevertheless

+0

У меня нет этого файла в разделе Application/Sonata/UserBundle/DependencyInjection – CoachNono

+0

Но вы используете 'Symfony \ Bundle \ FrameworkBundle \ DependencyInjection \ Configuration', правильно? И по сравнению с версией 2.5, 2.6 ** ** имеет '__construct()' в ней! http://api.symfony.com/2.6/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.html#method___construct Итак, попробуйте добавить переменную bool, скажем, TRUE, в 'new Configuration()'. Подобно 'new Configuration (TRUE)'. – Nevertheless

ответ

1

В отличии от Symfony 2.5, 2.6 фактически часов как__construct() метод в Symfony\Bundle\FrameworkBundle\DependencyInjection\Configuration, и его аргумент представляет собой режим отладки, согласно this. Таким образом, добавление переменной bool в Configuration должно решить проблему.

$configuration = new Configuration(TRUE); //or FALSE, if it's in prod 

Чтобы получить режим отладки достаточно легко автоматически, вы можете использовать что-то вроде:

$env = $container->getParameter("kernel.environment"); 
$debug = ($env === 'dev') ? TRUE : FALSE; 
+0

Как сделать это легко true в debug и false в prod? – CoachNono

+1

Обновлен мой ответ:) – Nevertheless