Обновление до Symfony 2.6 вызывает проблему с ApplicationSonataUserExtension

0

В настоящее время я пытаюсь перейти на 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');
    }
}

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

  • 0
    Пожалуйста, попробуйте var_dump($rootNode) в Configuration::getConfigTreeBuilder() , где-то в строке 34-35, после того, как он будет объявлен. Что в нем есть?
  • 0
    У меня нет этого файла в Application / Sonata / UserBundle / DependencyInjection
Показать ещё 3 комментария
Теги:
sonata-admin
sonata-user-bundle

1 ответ

1
Лучший ответ

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

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

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

$env = $container->getParameter("kernel.environment");
$debug = ( $env === 'dev' ) ? TRUE : FALSE;
  • 0
    Как сделать так, чтобы это было легко верно в отладке и ложно в программе?
  • 1
    Обновил мой ответ :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню