Подтвердить что ты не робот

Отключить устаревшее предупреждение в Symfony 2 (.7)

Так как мой Symfony 2 обновляется до 2.7. Я получаю много устаревших ошибок в PHPUnit и console (сообщение уже ясно).

ProjectX\ApiBundle\Tests\Controller\SectionsControllerTest::testPostDebug()
The twig.form.resources configuration key is deprecated since version 2.6 and will be removed in 3.0. Use the twig.form_themes configuration key instead.

Есть идеи, как отключить их сейчас?

4b9b3361

Ответ 1

У меня такая же проблема и она была решена аналогично приведенной ниже ссылке. Symfony объявляет о всех ошибках и переопределяет то, что вы указали в php.ini по дизайну (иначе он не смог поймать и отобразить красивые трассировки стека для вас).

Итак, вам нужно переопределить встроенную отчетность об ошибках Symfony2, создав в вашем AppKernel.php функцию init() и установив error_reporting, как вы хотели бы там, вместе с ( возможно) обнаружение некоторой среды, чтобы убедиться, что вы не видите ошибки в производстве, например:

// Add this to app/AppKernel.php
public function init()
{
    if ($this->debug) {
        ini_set('display_errors', 1);
        error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
    } else {
        ini_set('display_errors', 0);
    }
}

Подробнее здесь (используйте Google Translate, если вы не читаете русский язык) http://tokarchuk.ru/2012/12/disable-deprecated-warnings-in-symfony-2/

Ответ 2

Унаследованная AppKernel функция Kernel:: init() обесценивается, поэтому ее изменение не является жизнеспособным долгосрочным решением.

Вы можете легко переопределить отчет об ошибках, изменив вызов на Debug:: enable(); как в app/console, так и в web/app_dev.php.

Изменить

Debug::enable();

к

Debug::enable(E_RECOVERABLE_ERROR & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED, false);

Это приведет к тому, что все другие сообщения об ошибках будут отображаться в такт при подавлении обесценившихся предупреждений. И вам вообще не нужно возиться с ядром.

Ответ 3

В моем случае я не смог скрыть устаревшее предупреждение без использования переменной SYMFONY_DEPRECATIONS_HELPER environmentnment.

Измените phpunit.xml на

<phpunit>
    <!-- ... -->

    <php>
        <env name="SYMFONY_DEPRECATIONS_HELPER" value="weak"/>
    </php>
</phpunit>

Затем у вас будет только одно сообщение типа "Остальные уведомления об отступлении (x)", который не рассматривается как сбой теста.

Надеюсь, это поможет.

Ответ 4

Обратите внимание, что отключение предупреждений об отставке с помощью error_reporting() или Debug:: enable() не будет препятствовать их регистрации в dev.log. Чтобы отключить их от регистрации, вам нужно будет изменить уровень журнала в вашем монологическом обработчике на "предупреждение" (предупреждения об отказе регистрируются как "информация" в канале "php" ).

В качестве альтернативы, чтобы предотвратить повреждение других журналов, вы можете создать отдельный обработчик монолога с другим уровнем для канала "php", например.

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
            formatter: monolog.formatter.session_request
            channels: '!php'
        php:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: warning
            formatter: monolog.formatter.session_request
            channels: 'php'

Ответ 5

В новой версии Twig удален ключ конфигурации twig.form. Поэтому вы должны заменить ключ в config.yml

 ///DEPRECATED : 

  twig:
     form:
         resources:
             - 'path_to_template_file'

 // NEW WAY : 
  twig:
     form_themes:
         - 'path_to_template_file'