我已经在 Symfony 4 项目中安装了 Sonata Seo Bundle,并且按照 https://sonata-project.org/bundles/seo/2-x/doc/reference/usage.html 中的步骤操作。但是当我启动应用程序时,我遇到了这个致命错误:
The "sonata.seo.page" service or alias has been removed or inlined when the container was compiled. You should either make it public, or stop using the container directly and use dependency injection instead.
我刚刚找到了一个可以很好地使用 Seo Bundle 的解决方案。
只是,在 config/service.yaml 文件中我添加:
sonata.seo.page:
class: Sonata\SeoBundle\Seo\SeoPage
以前我在同一个文件中有这个:
services:
_defaults:
autowire: true
autoconfigure: true
public: true
您遇到的错误可能是由于 Symfony 容器中服务配置方式的更改所致。要解决此问题,您可以尝试在 Symfony 配置中公开“sonata.seo.page”服务:
在 services.yaml 文件中,在 services 下添加以下内容:
services:
# ...
sonata.seo.page:
public: true
这应该可以使服务可访问并解决问题。更改配置后请记住清除缓存:
php bin/console cache:clear
如果问题仍然存在,请确保您已准确执行所有安装和配置步骤,并且不存在导致此错误的冲突服务。