【问题标题】:Symfony 3.4 Extends not working after migrationSymfony 3.4 扩展在迁移后不工作
【发布时间】:2019-05-05 23:06:18
【问题描述】:

我做了一个从 2.7 版到 3.4 版的 symfony 迁移

除了一件事,每一件事都很好。树枝文件不起作用,错误消息是:

找不到模板“::layout.html.twig”(查看:vendor\symfony\symfony\src\Symfony\Bridge\Twig/Resources/views/Form, vendor\knplabs\knp-menu\src\第 3 行 abcdBundle::layout.html.twig 中的 Knp\Menu/Resources/views)。

树枝代码是:

{% extends "::layout.html.twig" %}

我想加载本地化为app/Resources/views/layout.thml.twig 的布局。 我也试过这个代码:{% extends "layout.html.twig" %} 没有:: 同样的麻烦。

位置文件:

app/
    Resources/
        views/
            layout.html.twig // it don't find this twig

src/
    ab/
        cdBundle/
            Ressources/
                views/
                    layout.html.twig // error into this file

【问题讨论】:

  • 默认情况下不再支持基于冒号的模板路径。 stackoverflow.com/questions/47832977/…
  • @Cerad 好的,但是如何解决我的问题?我已经看过这个帖子了。但我不明白如何让我的树枝再次工作。
  • 使用 twig 命名空间(首选解决方案)或将 twig 引擎添加到您的模板配置中,如公认的冗长答案的最后所示。我假设这一切都在您的 2.7 应用程序下工作,并且没有拼写错误等。
  • @Cerad 我已经添加了模板配置。迁移前一切正常。我试过这个代码:{% extends "@App/layout.html.twig "%}(带命名空间),我有这个错误There are no registered paths for namespace" App "
  • 对于 3.4,我期望 @AppBundle/layout.html.twig。 “bin/console debug:twig”将显示可用的命名空间。但只是简单的 layout.html.twig 真的应该工作。虽然我怀疑这只是一个问题错字,但 Ressources 拼写错误。我知道这可能会让人很困惑,因为 3.4 支持几种不同的目录结构。

标签: php symfony twig migration symfony-3.4


【解决方案1】:

我已更新 config.yml 文件以添加:

twig:
    paths:
        '%kernel.project_dir%/app/Resources/views': app

这在bin/console debug:twig的“加载器路径”中添加了“命名空间@app

现在,当我使用 {% extends "@app/layout.html.twig" %} 时,它工作正常。

感谢@Cerad 的帮助,非常感谢

【讨论】:

  • 很高兴你能成功。只是出于好奇,debug:twig 是否显示“(无)命名空间可能指向模板?
  • @Cerad 是的!在列表底部,有一个“None”指向vendor\symfony\symfony\src\Symfony\Bridge\Twig/Resources/views/Form\ 。这是问题的根源吗?
  • 我想是的。 None 是模板的默认位置,在新的 Symfony 目录结构下,它指向 project/templates。不知道为什么它会指向 Twig 网桥目录。可能会尝试类似 '%kernel.project_dir%/templates': '' 的方法,看看是否可以消除对应用命名空间的需求。如果您升级到 4x,它也会有所帮助。
  • 如果这条路径 %kernel.root_dir%/Resources/views 确实存在,它会自动添加到 Twig 路径(没有命名空间 (None)),所以 {% extends "layout.html.twig" %} 应该可以工作。
  • Twig bridge 目录在那里(没有命名空间),因为它是由 TwigBundle 注册的,可以轻松地从任何表单主题布局(例如form_div_layout.html.twig)中查找/使用/扩展。
【解决方案2】:

如果您想让您的项目更加安全,并为将来迁移到 Symfony 4 做好准备——考虑将您所有的 Resourcesapp/ 目录中移出。

你可以找到更多,即。在这里:

http://fabien.potencier.org/symfony4-directory-structure.html

【讨论】:

    猜你喜欢
    • 2018-11-04
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    相关资源
    最近更新 更多