Symfony 2.8 Twig_Error_Runtime Sonata 管理包

Posted

技术标签:

【中文标题】Symfony 2.8 Twig_Error_Runtime Sonata 管理包【英文标题】:Symfony 2.8 Twig_Error_Runtime Sonata Admin Bundle 【发布时间】:2016-07-03 14:00:24 【问题描述】:

Twig_Error_Runtime:在 SonataAdminBundle::standard_layout.html.twig 的第 183 行渲染模板期间引发了异常(““app.security”变量不可用。”)。

现在我认为这是不可能的,应用程序是 Twig 全局的,并且不知道从哪里开始。我正在尝试配置 Sonata User Bundle: FOS User Bundle 和 Sonata Admin Bundle,但收效甚微。

编辑我删除了 SonataUserBundle 并返回到我知道在其他项目中工作的配置。这将问题隔离为特定于 Symfony 和 Twig 而不是我的配置中的错误;所以我删除了我的配置文件。

对于遇到此问题的任何其他人:app.security 从 2.6 开始被弃用,并且应该在 3.0 中被删除。然而,有人破坏了 BC 层,容器不再被注入,所以结果是 app.security 在 2.8 中被删除,而不是在 3.0 中。请参阅 https://github.com/symfony/symfony/issues/18223 和 https://github.com/symfony/symfony/commit/bf066dace2922cf1ce335f5f683fc63d5a7e23c2。我不知道这是否或何时会解决。

同时我的解决方案是完全覆盖 SonataAdminBundle::standard_layout.html.twig 并根据迁移到 3.0 的说明删除对 app.security 的调用:http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements

最后,此更改还弃用了 app.security 全局变量 用于 Twig 模板。您应该改用 app.user 全局 变量和 is_granted() 函数。

【问题讨论】:

【参考方案1】:

这是 Twig Bridge 中的一个错误,可能会在某个日期修复: https://github.com/symfony/symfony/issues/18223 https://github.com/symfony/symfony/commit/bf066dace2922cf1ce335f5f683fc63d5a7e23c2

同时我的解决方案是完全覆盖 SonataAdminBundle::standard_layout.html.twig 并根据迁移到 3.0 的说明用 app.user 替换对 app.security 的调用:http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements

【讨论】:

以上是关于Symfony 2.8 Twig_Error_Runtime Sonata 管理包的主要内容,如果未能解决你的问题,请参考以下文章

将 symfony 2.8 更新到 3.* ,奏鸣曲错误

自 Symfony2 更新到 2.8 以来覆盖注册表单(SonataUserBundle)

Symfony LTS:如何从 2.8 升级到 3.4?

Symfony 2.8 -> 3.4 本地开发速度降低

Symfony 2.8 动态 ChoiceType 选项

XmlFileLoader.php 第 281 行中的 symfony 2.8 InvalidArgumentException