Метод для извлечения данных блока с учетом предварительных запросов к этому блоку.
$blockInfo — параметры блока. Это массив с тремя обязательными элементами ['id'=>..., 'src-block-id'=>..., 'tpl'=>...]
, в качестве значений которых берутся, соответственно, регулярный номер блока, номер исходного блока и имя шаблона. Этот массив можно получить с помощью метода Blox::getBlockInfo().
$tdd — массив всех переменных дескриптора. Этот массив можно получить с помощью метода Tdd::get().
$xprefix — префикс переменных дескриптора (строка). Если передается "x", то метод будет применяется к экстраданным.
Именно с помощью этого метода в системе автоматически извлекаются данные всех блоков, которые отображаются на текущей странице. Поэтому собственно данный метод применять и не приходится — нужно только сделать необходимые запросы ко всем блокам, как это описано на странице Класс Request. Данный метод обычно применяется для извлечения данных произвольного блока.
Пример:
# Нужны данные только о персонах возрастом более 25 лет.
# Сортировать сначала по фамилии, затем по имени.
$personsBlockId = 9;
Request::add('block='.$personsBlockId.'&pick[3][gt]=25&sort[1]=asc&sort[2]=asc');
...
$personsBlockId = 9;
$blockInfo2 = Blox::getBlockInfo($personsBlockId);
$tdd2 = Tdd::get($blockInfo2);
# Извлечь таблицу
$tab2 = Request::getTab($blockInfo2, $tdd2);
Не забывайте о том, что на выборку данных блока влияют параметры, заданные в дескрипторе шаблона. При этом, метод Request::add перебивает эти параметры.
Метод для извлечения данных из любой таблицы с учетом предварительно сформированных запросов к этой таблице.
С помощью метода Request::getTable() можно извлекать данные из всех таблиц, в том числе из таблиц шаблонов (с префиксом $), хотя в последнем случае метод Request::getTab() предоставляет больше возможностей.
$table — имя таблицы.
$sampleName — идентификатор запроса (произвольная строка). Данный параметр применяется, когда к таблице необходимо сделать какие-то запросы. Причем, сами запросы можно формировать в других скриптах. Не используйте только цифры, так как в этом случае запрос будет интерпретирован, как запрос к блоку с этим номером.
$recordIdColumn — имя ключевого поля. Этот параметр используется только для извлечения одной записи (и соседних) по запросу "single".
$xSql — дополнительное условие в SQL запросе. Строка должна начинаться со слова: AND ...
Для формирования запросов к таблице перед ее извлечением можно использовать весь арсенал средств, применяемый при запросах к блокам. Имеются в виду запросы sort, pick, limit, part, backward, search, single, которые можно сделать как напрямую с помощью метода Request::add(), так и через URL.
Для того чтобы сформировать запрос к произвольной таблице и извлечь данные с помощью метода Request::getTable(), нужно следовать двум правилам:
Вместо номеров полей нужно использовать имена колонок.
Пример: В системной таблице users найти всех пользователей с определенным почтовым ящиком
echo ' <a href="?page=22&block=users2&p[email]=info@bloxcms.net"> Найти пользователей с таким эл.адресом </a>'; . . . Request::add('block=users2&limit=50'); // Выводить по частям по 50 шт $users = Request::getTable(Blox::info('db','prefix').'users', 'users2'); // Извлечение