2016-02-29 3 views
1

С шаблонами Silverstripe, могу ли я передать переменную из одного включить в другой?Передача переменных из одного шаблона в другой шаблон

В пределах заказа_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). Возможно ли, что этот подход возможен? Есть ли способ лучше. Заранее спасибо.

+0

Я предполагаю, что '$ SendingEmail', скорее всего, не установлен в шаблоне с включенным блоком. Вы проверили значение '$ SendingEmail' в этом родительском шаблоне? – Turnerj

+0

Он должен работать в соответствии с https://docs.silverstripe.org/en/3.3/developer_guides/templates/syntax/#includes. Вы скрылись? Вы уверены, что этот шаблон фактически отображается (а не другой из модуля)? – wmk

ответ

0

Должно быть. К сожалению, я не уверен во всех случаях, но, насколько я знаю, это вещь (возможность передавать любую переменную в области). Но есть ряд предостережений, о которых вы, вероятно, должны знать. Самый большой из них - сфера. Если вы меняете контекст в любой момент (и у вас несколько слоев, поэтому это несколько вероятно), вам необходимо убедиться, что переменная, которую вы пытаетесь установить, находится в области видимости. В противном случае он будет пустым и, таким образом, будет сообщаться как таковой о любых дальнейших ссылках на него. Это самая распространенная проблема, когда дело доходит до шаблонов, поэтому она всегда платит двойную (тройную) проверку.