如何将Twig引入文件中的变量正确传递至另一个引入文件
解决Twig模板间批量传递变量的问题
方法一:将配置变量封装为数组(推荐)
这种方式逻辑清晰,便于维护,还能避免变量污染。
- 修改galleryConfig.twig,把所有配置变量统一放到一个数组中:
{% set gallery_config = { holdingImage: 'holding-image.svg', // 可在此添加其他需要传递的配置变量 galleryTitle: '我的相册' } %}
- 在view.twig中引入配置并传递给gallery:
先加载配置文件,让配置数组进入当前上下文,再把这个数组传给gallery模板:
{# 加载配置文件,获取gallery_config变量 #} {% include 'galleryConfig.twig' %} {# 将配置数组传递给gallery模板 #} {% include 'gallery.twig' with gallery_config %}
- 在gallery.twig中直接使用变量:
无需额外处理,直接调用变量名即可:
<img src="{{ holdingImage }}" alt="占位图">
方法二:无需封装数组,直接传递配置上下文
如果不想修改galleryConfig的现有写法(仍单独定义变量),可以通过Twig的上下文捕获批量传递:
- galleryConfig.twig保持原有写法:
{% set holdingImage = 'holding-image.svg' %} {% set galleryCount = 12 %}
- 在view.twig中捕获配置变量并传递:
用set配合include的参数,单独捕获配置模板的所有变量,再传给gallery:
{# 加载配置模板,捕获它的所有变量到config_vars #} {% set config_vars = include('galleryConfig.twig', {}, { with_context: false, capture_context: true }) %} {# 将捕获到的变量传递给gallery模板 #} {% include 'gallery.twig' with config_vars %}
- gallery.twig中直接使用变量:
和方法一一致,直接调用{{ holdingImage }}就能输出holding-image.svg。
关于原有somefile.png显示的问题
大概率是gallery.twig本身有默认值,或是view.twig之前给gallery传递了这个变量。用上述方法传递配置变量后,配置里的holding-image.svg会覆盖原有值,就能得到你想要的结果。
内容的提问来源于stack exchange,提问作者Zabs
相关产品推荐
相关产品推荐

