Twig-包含其他目录中的模板

use*_*080 5 twig

是否可以包含一个模板,{% include %}该模板位于定义的模板路径之外:

$template = $twig->loadTemplate('example.tpl'); 
Run Code Online (Sandbox Code Playgroud)

我问它,因为这条线不起作用:

{% include '.../example/navbar_left.tpl' %}
Run Code Online (Sandbox Code Playgroud)

Nic*_*ica 5

不,不可能使用Twig_Loader_Filesystem,因为它明确拒绝包含..内部的模板名称。这可以验证到validateName($name)file中函数的定义Twig/lib/Twig/Loader/Filesystem.php

如果您需要访问路径外的模板,我能想到的唯一干净的解决方案是创建自己的 loader

一个可行的解决方法是在实际注册的文件夹内定义一个符号链接Twig_Loader_Filesystem,指向您要访问的目录。要小心使用这种方法,点链接到一个安全的地方。


max*_*ver 5

您可以通过以下方式添加更多路径: https: //symfony.com/doc/3.4/templated/namespaced_pa​​ths.html

配置.yml

# Twig Configuration
twig:
  paths:
    '%kernel.root_dir%/../src/AppBundle/Resources/views': AppBundle
    '%kernel.root_dir%/../web/': 'WEB_DIR_DIST' #your new custom path
Run Code Online (Sandbox Code Playgroud)

someFile.html.twig

<script>{{ source('@WEB_DIR_DIST' ~ 'custom.js') }}</script>
Run Code Online (Sandbox Code Playgroud)