gpt4 book ai didi

php - 覆盖 Twig 查找 View 的方式?

转载 作者:搜寻专家 更新时间:2023-10-31 21:21:56 24 4
gpt4 key购买 nike

我是 Symfony 的新手,到目前为止我非常喜欢它!

现在,我正在玩不同的个人爱好项目,我遇到了一些我似乎无法全神贯注的事情。


我现在正在运行 Symfony 3.3.6。我正在尝试向我的项目添加 theme 功能。现在,我的 Bundle 有自己的 View ,我可以在 app/Resources/views/ 中覆盖它们。所以现在,开箱即用的 Symfony 支持基本 View ,具有覆盖的可能性。

我想实现的是多一层回退。

我想让 twig 首先查看一个主题文件夹,其中 [THEME] 将是一个配置。

1) 在/app/theme/[THEME]/resources/view 中寻找文件2) 在/app/theme/[THEME]/resources/[BUNDLE]/view 中寻找文件


我也希望这发生在包内,例如 ThemeBundle。

基本上我想要一个 Bundle,它将采用 Twig 关于如何查找 View 的逻辑。非常重要的是所有代码,现在,仍然可以工作。所以我不想添加路径变量或类似的东西,但我实际上想从我自己的 Bundle 中修改 TwigBundle 的行为!

这种事情可能吗?

最佳答案

Twig 有一个内置功能可以实现您想要的功能,称为命名空间

Twig 将始终加载命名空间中存在的第一个模板,从第一个配置路径开始。

像这样在你的 app/config/config.yml 中配置路径:

twig:
# ...
paths:
'%kernel.project_dir%/vendor/acme/themes/theme1': theme
'%kernel.project_dir%/vendor/acme/themes/theme2': theme
'%kernel.project_dir%/vendor/acme/themes/common': theme

然后像这样在模板中使用命名空间:

{{ include('@theme/header.twig') }}

参见文档章节 Multiple Paths per Namespace .

为了动态添加更多位于包目录中的路径,您可以在相应的包中使用编译器传递来添加它们。

关于php - 覆盖 Twig 查找 View 的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45662042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com