Skip to content

include

Igor edited this page Sep 15, 2016 · 1 revision

Синтаксис

{* форма 1 *}
{? include <template_name>; ?}
{? include_once <template_name>; ?}
{* форма 2 *}
{? include <template_name> <argument>; ?}
{? include_once <template_name> <argument>; ?}
{* форма 3 *}
{? include <template_name> <argument1> <argument2> [argument3 [argumentN ...]]; ?}
{? include_once <template_name> <argument1> <argument2> [argument3 [argumentN ...]]; ?}

Описание

Включает содержимое шаблона <template_name> в место конструкции include или include_once. Расширение файла шаблона указывать не нужно. Файл ищется по пути, указанному при инициализации в Template::init

В отличие от include, include_once позволяет включать файл <template_name> лишь единожды за вызов Template::build.

Внимание!

Так как третья форма позволяет задать множество аргументов, перечисляя их через пробел, то в конце каждой конструкции include или include_once необходимо обязательно ставить ;, чтобы следующие за ней конструкции не были восприняты, как аргументы, которые необходимо передать включаемому шаблону!
Однако в случае следующего за конструкцией include окончания блока конструкций (?}) можно опустить ;. Пример смотрите ниже.

Отличия форм записи

Форма 1

В первой форме записи конструкции включаемый шаблон получает доступ ко всем тем же аргументам, которые были переданы текущему.

Форма 2

Во второй форме включаемый шаблон использует <argument> в качестве ассоциативного массива входных аргументов.

Например, пусть шаблон mail_message выглядит следующим образом:

Здравствуйте, {{name}}! Ваше сообщение:
{? include message msg ?}

Массив переданных аргументов:

[
	'name' => 'Алексей',
	'msg' => [
		'id' => 1,
		'text' => 'сообщение',
	],
]

Тогда шаблон message будет иметь доступ к следующим аргументам:

[
	'id' => 1,
	'text' => 'сообщение',

]

Форма 3

В третьей форме записи каждый аргумент <argumentN> передается индексированным массивом, слева-направо, начиная с индекса 0.

Например, перепишем шаблон mail_message следующим образом:

Здравствуйте, {{name}}! Ваше сообщение:
{? include message msg.id msg.text ?}

Тогда шаблон message будет иметь доступ к следующим аргументам:

[1, 'сообщение']
//или
[
	0 => 1,
	1 => 'сообщение',
]

Обратиться из шаблона message к переданным аргументам можно с помощью ключевого слова this, например #{{ this[0] }}: {{ this[1] }}

Clone this wiki locally