В настоящее время я пытаюсь перейти на 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 фактически есть __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;
var_dump($rootNode)
вConfiguration::getConfigTreeBuilder()
, где-то в строке 34-35, после того, как он будет объявлен. Что в нем есть?