В настоящее время я пытаюсь перейти на 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
Тем не менее, нет __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');
}
}
Я действительно понятия не имею …
В отличие от Symfony 2.5, 2.6 на самом деле имеет __construct()
метод в Symfony\Bundle\FrameworkBundle\DependencyInjection\Configuration
и его аргумент представляет режим отладки, в соответствии с этот. Итак, добавив переменную bool в Configuration
должен решить проблему.
$configuration = new Configuration(TRUE); //or FALSE, if it's in prod
Чтобы автоматически получить режим отладки, вы можете использовать что-то вроде:
$env = $container->getParameter("kernel.environment");
$debug = ( $env === 'dev' ) ? TRUE : FALSE;
Других решений пока нет …