wiki:Brick/Параметры/bkvar

Параметр кирпича - bkvar

Описание

Параметр bkvar - определяет локальную переменную кирпича.

Объявления в блоке "Параметры кирпича":

[bkvar=myvar]Default value[/bkvar]

Вывод результата в блоке "Тело кирпича":

[bkvar]myvar[/bkvar]

Область применения

Область применения параметра bkvar обширна, но основная область - это описание частей интерфейса пользователя в кирпиче.

Допустим, необходимо построить следующий элемент интерфейса пользователя, который будет строить список неких записей из БД:

<ul>
  <li>Запись 1</li>
  <li>Запись 2</li>
  <li>...</li>
  <li>Запись N</li>
</ul>

Для реализации этого интерфейса нам потребуется создать кирпич и скрипт управления для него:

  1. Создать кирпич, например mylist.html, описав в нем следующее:
    • В блоке "Параметры кирпича" объявить:
      • два параметра типа bkvar (локальные переменные):
        • переменная row - часть элемента интерфейса пользователя, значение которой будет <li>{v#item}</li>, где {v#item} - идентификатор item, который будет заменен значением из БД при построения списка,
        • переменная result - результат построения списка, в которую будет занесен построенный список, по умолчанию пустой.
      • параметр типа script в котором будет указан файл скрипта управления кирпичом.
    • В блоке "Тело кирпича" описать шаблон, на основе которого будет собран элемент интерфейса пользователя.
  2. Создать скрипт управления кирпичом, который будет:
    1. читать записи из БД,
    2. строить список на основе прочитанных записей из БД и шаблона части элемента из локальной переменной кирпича row,
    3. занесет построенный список в локальную переменную кирпича result

В итоге будем иметь следующее:

Файл кирпича mylist.html

<!--[*]
[script]mylist.php[/script]
[bkvar=row]<li>{v#item}</li>[/bkvar]
[bkvar=result][/bkvar]
[*]-->
<ul>
  [bkvar]result[/bkvar]
</ul>

Cкрипт управления mylist.php:

<?php
// получить объект кирпича который вызвал этот скрипт
$brick = Brick::$builder->brick;

// получить указатель на записи из таблицы cms_list по SQL запросу 'SELECT * FROM cms_list'
$rows = Brick::$db->query_read('SELECT * FROM cms_list');

//объявить пустую строковую переменную $list
$list = "";

// прочитать каждую запись из таблицы в переменную $r, где $r - будет 
// иметь тип "массив", указателем в котором будет имя поля из таблицы
while (($r = Brick::$db->fetch_array($rows))){

  // взять значении из локальной переменной кирпича row и заменить в 
  // нем идентификатор item на значение из строки выбранного запроса, 
  // результат добавить к переменной $list
  $list .= Brick::ReplaceVar($brick->param->var['row'], 'item', $r['field_item']);
}
$brick->param->var['result'] = $list;
?>