小编Kar*_*rim的帖子

从控制器访问 Liip Imagine 包 - 将服务分配给变量 (Symfony 4)

(Symfony 4) 如何从 PHP 代码中访问 Liip Imagine 包?我找到了一个使用 Liip Imagine Cache 的解决方案,但我无法让它工作。两种解决方案,它们都不适合我。我完全不知道为什么。

当我尝试使用harmstyler的解决方案时

$imagineCacheManager = $this->get('liip_imagine.cache.manager');
Run Code Online (Sandbox Code Playgroud)

在我的控制器然后我得到一个 ServiceNotFoundException

找不到服务“liip_imagine.cache.manager”:即使它存在于应用程序的容器中,“App\Controller\MemberController”内的容器是一个较小的服务定位器,只知道“doctrine”、“form.factory”、 “http_kernel”、“parameter_bag”、“request_stack”、“router”、“security.authorization_checker”、“security.csrf.token_manager”、“security.token_storage”、“serializer”、“session”和“twig”服务。尝试改用依赖注入。

所以我尝试了 Alister Bulman 的建议,将它手动注入到 service.yaml 中的一个类中,但这也不起作用。

在我的 service.yaml 我有

app.imagine_cache_manager:
    class: Liip\ImagineBundle\Imagine\Cache\CacheManager
    arguments: ["@liip_imagine.cache.manager"]
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我有

$imagineCacheManager = $this->get('app.imagine_cache_manager');
Run Code Online (Sandbox Code Playgroud)

这导致我遇到相同的异常

找不到服务“app.imagine_cache_manager”:即使它存在于应用程序的容器中,“App\Controller\MemberController”中的容器是一个较小的服务定位器,它只知道“doctrine”、“form.factory”、“http_kernel” ", "parameter_bag", "request_stack", "router", "security.authorization_checker", "security.csrf.token_manager", "security.token_storage", "serializer", "session" 和 "twig" 服务。尝试改用依赖注入。

[顺便说一句,我真正想做的是:我有成员,每个成员都有一个形象。创建会员 我上传了一张图片,让 Liip 创建主图片的调整大小的图片。当我删除图像或成员时,当然我也想删除Liip缓存的图像。这就是为什么我尝试让 Liip 缓存管理器能够获取缓存的图像路径以便能够删除它们。另一种方法是有一个事件监听器,但这对我来说也不起作用。我将在另一个问题中总结 Listener 方法。]

php dependency-injection liipimaginebundle symfony4

1
推荐指数
1
解决办法
1071
查看次数