php twig include,php – 在Twig中有条件地扩展模板

采用以下树结构:

├───base

│ ├───0001

│ │ └───pages

│ │ file.twig

│ │ file_content.twig

│ └───ext

│ └───store

│ │ └───pages

│ │ └───all

│ │ │ file.twig

│ │ └───0001

│ │ file.twig

│ └───newsletter

│ └───pages

│ └───all

│ │ file.twig

│ └───0001

│ file.twig

└───pages

│ file.twig

└───0001

file.twig

正如你所看到的,文件周围散布着一堆文件.twig.

我想渲染文件base / 0001 / pages / file_content.twig的内容.

但是,我希望以下文件可以更改块内的内容:

> ext /< ...> /pages/0001/file.twig

> ext /< ...> /pages/all/file.twig

> /pages/0001/file.twig

> /pages/file.twig

但是,这些文件可能存在也可能不存在,可能需要也可能不需要,并且必须能够更改任何块的内容.

有没有办法让这项工作?

到目前为止,我有以下内容:

{% embed 'base/pages/file_content.twig' %}

{% block page_file %}

{{ parent() }}

{% if data.store_enabled %}

{% include [

'base/ext/store/pages/0001/file.twig',

'base/ext/store/pages/all/file.twig'

] ignore missing

%}

{% endif %}

{% include ['pages/0001/file.twig', 'pages/file.twig'] ignore missing %}

{% endblock %}

{% endembed %}

这“工作”,在某种意义上它呈现页面但不允许任何块被覆盖.

我怎么能做这个工作?

作为一个例子,考虑这种文件结构(是的,文件丢失,这是预期的):

├───base

│ ├───0001

│ │ └───pages

│ │ file.twig

│ │ file_content.twig

│ └───ext

│ └───store

│ │ └───pages

│ │ └───0001

│ │ file.twig

└───pages

file.twig

文件库/ 0001 / pages / file_content.twig具有以下内容:

{% block page_file %}

{% block title %}

Nice title

{% endblock %}

{% block price %}{% endblock %}

{% endblock %}

文件库/ ext / store / pages / 0001 / file.twig具有以下内容:

{% block price %}55 €{% endblock %}

文件pages / file.twig有:

{% block title %}{{ parent() }}


{% endblock %}

{% block price %}

{{ parent() }}
{% endblock %}

我期望的输出如下:

Nice title


55 €

但是使用该代码,所有其他文件的更改都被忽略,输出只有以下内容:

Nice title

注意:

重要的是要注意我正在使用Twig 1.33.2,并使用Twig_Autoloader :: register();方法.

我不能使用Twig 2.x,因为它需要PHP 7.0并且我仅限于PHP 5.3.29.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值