Контактная информация            Баг трекер            Предложение хостинг-провайдерам

Иньекции в список Гибридных данных

Игорь Бронников (ne0d1n) Автор: Игорь Бронников (ne0d1n)
Дата: 2 июля 2007
Рубрика: How-to

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

В качестве примера можно привести корзину электронного магазина, в которой записаны id выбранных товаров.

Для того, чтобы вывести такой список гибридных документов (предположим, что он хранится в переменной $idlist в виде строки разделенных запятой id документов, напр. «1,3,7,86») в Open Constructor используется прием, называемый «иньекция».

Объект, который будет формировать контент, помещается в stub блок (объекты, находящиеся в stub блоках по умолчанию не выводятся и используются для «запуска вручную» из PHP кода или шаблона SMARTY), и нижеприведенным кодом иньектируем $idlist в объект.

В дальнейшем можно «вывести» объект, т. е. добавить сгенерированный объектом HTML в генерируемую страницу или «не выводить», а присвоить переменной для последующего использования.

Smarty

{*--- без вывода ---*}
{inject block='stub' field='ids' value=$idlist}
{assign_by_ref var=stub value=$ctx->getObjectAt('stub')}
{set documents=$stub->getDocuments()}
 
{*--- с выводом ---*}
{inject block='stub' field='ids' value=$idlist}
{run_block id='stub'}



PHP

//--- без вывода ---
$obj = &$ctx->getObjectAt('stub');
$ctx->inject($obj, 'ids', $idlist); // $obj->ids = $idlist;
$docs=$obj->getDocuments();
 
//--- вывод ---
$obj = &$ctx->getObjectAt('stub');
$ctx->inject($obj, 'ids', $idlist);
$obj->exec($ctx->_smarty);


 

Комментарии

RSS RSS

Добавить комментарий

Имя:     Email:
Комментарий:
Введите символы, которые видите на картинке.
Если символы неразборчивы, кликните по картинке несколько раз.