Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony:删除服务(cmf\u块.参考\u管理)_Php_Symfony - Fatal编程技术网

Php Symfony:删除服务(cmf\u块.参考\u管理)

Php Symfony:删除服务(cmf\u块.参考\u管理),php,symfony,Php,Symfony,我想从Symfony注销服务cmf_block.reference_admin。 经过一些研究,我发现应该通过CompilerPass来完成。下面是我如何删除它的: namespace PortalBundle\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjecti

我想从Symfony注销服务cmf_block.reference_admin。 经过一些研究,我发现应该通过CompilerPass来完成。下面是我如何删除它的:

namespace PortalBundle\DependencyInjection\Compiler;

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

class UnregisterThirdPartyServicesPass implements CompilerPassInterface
{
    public function process(ContainerBuilder $container)
    {
        if($container->getDefinition('cmf_block.reference_admin'))
            $container->removeDefinition('cmf_block.reference_admin');
    }
}
完成此操作后,我得到一个错误:

在xxx\cmf sandbox master\app\bootstrap.php.cache:2198堆栈跟踪:#0 xxx\cmf sandbox master\app\cache\dev\classes.php(11818)中出现未捕获的异常“Symfony\Component\dependency injection\exception\ServiceNotFoundException”,并显示消息“您已请求了一个不存在的服务”cmf\u block.reference\u admin“:Symfony\Component\DependencyInjection\Container->get('cmf_block.reference…'))#1 xxx\cmf sandbox master\vendor\sonata project\admin bundle\Route\RoutesCacheWarmUp.php(47):sonata\AdminBundle\admin\Pool->getInstance('cmf_block.reference…)php(48):Sonata\AdminBundle\Route\RoutesCacheWarmUp->warmUp('xxx')#3 xxx\cmf sandbox master\app\bootstrap.php.cache(2711):symfony\Component\HttpKernel\cachewarer\warmeraggregate->warmUp('xxx')#\cmf sandbox master\app\bootstrap.php.cache('C:\in xxx\cmf sandbox master\app\bootstrap.php.cache,第2198行

也许你们中的某个人可以帮助我,或者知道如何从我的Symfony中删除CMF块包的参考块功能

提前非常感谢!

,例如:

public function process(ContainerBuilder $container)
    {
        if ($container->hasDefinition('cmf_block.reference_admin'))
         {
           $container->removeDefinition('cmf_block.reference_admin');
         }
    }
并在服务可以真正存在于容器中时添加编译器过程。检查如何控制过程顺序。例如,注册如下:

// ...
$container->addCompilerPass(
    new CustomPass(),
    PassConfig:: TYPE_REMOVE
);

希望这有帮助

好的,我似乎无法注销此特定服务。我认为它在第三方捆绑包中太深了

我现在的解决方法(非常简单,并没有让我感到高兴):不允许每个用户都使用该服务的所有路由,因此无法访问该服务,并删除仪表板上的链接


感谢您的帮助-如果有人知道如何使上述工作-我将始终感兴趣!

错误在缓存文件中,您是否清除了所有缓存?请在尝试删除之前检查服务是否存在it@François dupont是的,我清除了缓存-没有区别。@Matteo我只是相应地编辑了处理方法-结果没有区别服务确实存在,并且似乎试图从其他地方访问!Hi@Tim可能有其他服务正在使用它,并且正在尝试访问…尝试在cmf源代码中查找相同的用法