将变量从一个模板传递到另一个模板
问题描述:
使用Silverstripe模板,我可以将变量从一个包含传递给另一个吗?将变量从一个模板传递到另一个模板
within Order_ConfirmationEmail.ss <% include Order SendingEmail=true %>
。将$ SendingEmail设置为true。
而且在Order.ss通$ SendingEmail到另一个模板通过另一包括:
<% include Order_Content SendingEmail=$SendingEmail %>
然后使用变量$ SendingEmail在Order_Content.ss:
<% if $SendingEmail %>We are sending an email <% end_if %>
不幸的是, $ SendingEmail在Order_Content.ss中没有值(它在Order.ss中)。这种方法可行吗?有没有更好的办法。提前致谢。
答
它应该。不幸的是,我并不确定所有的情况,但据我所知,这是一件事情(能够通过范围内的任何变量)。但是,您应该注意一些警告。其中最大的就是范围。如果你在任何时候改变上下文(并且你有多个图层,所以这可能有点可能),你需要确保你试图引用的变量在范围内。否则它将是空白的,并因此对其进一步参考报告。这是模板中最常见的问题,因此总是支付双倍(三重)检查费用。
我的猜测是'$ SendingEmail'可能没有在包含模块的模板中实际设置。您是否检查过该父模板中的$ SendingEmail的值? – Turnerj
它应该按照https://docs.silverstripe.org/en/3.3/developer_guides/templates/syntax/#includes工作你刷新了吗?你确定这个模板是否被渲染(而不是模块中的另一个)? – wmk