Служба "instaltic.filter_manager" является частной [Symfony 3.4] - PullRequest
0 голосов
/ 25 апреля 2018

Во-первых, я уже видел этот вопрос .

Когда я пытаюсь обновить Symfony 3.3 до 3.4, я получаю следующие замечания:

User Deprecated: The "assetic.filter_manager" service is private, getting  it from the container is deprecated since Symfony 3.2 and will fail in 4.0. You should either make the service public, or stop using the container directly and use dependency injection instead.

User Deprecated: The "assetic.filter.cssrewrite" service is private, getting it from the container is deprecated since Symfony 3.2 and will fail in 4.0. You should either make the service public, or stop using the container directly and use dependency injection instead.

The "security.acl" configuration key is deprecated since Symfony 3.4 and will be removed in 4.0. Install symfony/acl-bundle and use the "acl" key instead.
  1. Я пытаюсь добавить это в src/MyBundle/Resources/services.yml:
services:
    Symfony\Bundle\AsseticBundle\AsseticBundle:
        public: true
Я установил acl-bundle.Файл config/security.yml:
security:
    acl:
        connection: default

Спасибо за помощь

1 Ответ

0 голосов
/ 25 апреля 2018

Как вы уже знаете из комментариев, assetic-bundle устарела, и поэтому вы можете мигрировать на Symfony 4 без изменения определения сервиса.

Но, вообще говоря, если вы хотите переопределить внешнюю службуконфигурации, вы можете реализовать пользовательский CompilerPass

namespace AppBundle\DependencyInjection\Compiler;

use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class OverrideServiceCompilerPass implements CompilerPassInterface
{
    public function process(ContainerBuilder $container)
    {
        $container->getDefinition('assetic.filter_manager')->setPublic(true);
        $container->getDefinition('assetic.filter.cssrewrite')->setPublic(true);
    }
}

и добавить его в свой пакет, как указано в официальной документации .

namespace AppBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use AppBundle\DependencyInjection\Compiler\OverrideServiceCompilerPass;

class AppBundle extends Bundle
{
    public function build(ContainerBuilder $container)
    {
        parent::build($container);
        $container->addCompilerPass(new OverrideServiceCompilerPass());
    }
}

См. Документация по определению API .

...