Блог

{call} встроенная функция smarty

{call} используется для вызова функции шаблона, определенной тегом {function}, так же как и функция плагина.

Заметка
Шаблонные функции определены глобально. Поскольку компилятор Smarty является однопроходным компилятором, тег {call} должен использоваться для вызова функции шаблона, определенной извне из данного шаблона. В противном случае вы можете напрямую использовать функцию как {funcname ...} в шаблоне.
  • Тег {call} должен иметь name атрибут , который содержит имя функции шаблона.
  • Значения для переменных могут быть переданы в функцию шаблона в качестве атрибутов.

Атрибуты:

Имя атрибутаТипОбязательныйПо умолчаниюОписание
name string да n/a Название шаблонной функции
assign string нет n/a Имя переменной, которой будет присвоен выход вызываемой шаблонной функции
[var ...] [var type] нет n/a Переменная для передачи локальной функции в шаблон

Варианты флагов:

ИмяОписание
NoCache Вызов функции шаблона в режиме nocache

Пример. Вызов рекурсивного меню

{* определяем функцию *}
{function name=menu level=0}
  <ul class="level{$level}">
  {foreach $data as $entry}
    {if is_array($entry)}
      <li>{$entry@key}</li>
      {call name=menu data=$entry level=$level+1}
    {else}
      <li>{$entry}</li>
    {/if}
  {/foreach}
  </ul>
{/function}

{* создаем массив для демонстрации *}
{$menu = ['item1','item2','item3' => ['item3-1','item3-2','item3-3' =>
['item3-3-1','item3-3-2']],'item4']}

{* запускаем массив через функцию *}
{call name=menu data=$menu}
{call menu data=$menu} {* краткая запись *}

Будет генерировать следующий вывод

* item1
* item2
* item3
      o item3-1
      o item3-2
      o item3-3
            + item3-3-1
            + item3-3-2
* item4
Иван

Иван

23 сентября 2019

Теги: smarty
Просмотры: 631