pdoPage и вывод результата прямого запроса
Добрый день.
Есть БД, вертится на Оракле.
В MODX сниппете получаю результат прямого запроса к Ораклу в виде массива. К примеру, так:
Как вывести этот массив через pdoPage?
Или — есть ли какие-либо идеи (лучше этой) по выводу постранично больших табличных данных, хранящихся не в БД MODX?
Спасибо.
Есть БД, вертится на Оракле.
В MODX сниппете получаю результат прямого запроса к Ораклу в виде массива. К примеру, так:
<?php
$conn = oci_connect($baselogin, $basepass, $oraconnect);
$stid = oci_parse($conn, 'SELECT rownum as IDX, s.* FROM V_WEBCLIENTS s where ID_FIRM='.$occlient);
$nrows = oci_fetch_all($stid, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW);
return $res;
Массив ассоциативный, по именам полей запроса.Как вывести этот массив через pdoPage?
Или — есть ли какие-либо идеи (лучше этой) по выводу постранично больших табличных данных, хранящихся не в БД MODX?
Спасибо.
Комментарии: 5
Нужно написать свой сниппет, который будет совместим с pdoPage и указать его для работы:
[[!pdoPage?
&element=`твойсниппет`
]]
Принцип работы таких сниппетов вот здесь.
Спасибо за ссылку. Прочитал, сделал сниппет — не заработал… :(
Код страницы:
Результат — на рис.
Где же ошибка (кроме той, что в генах :) )? Навигация работает исправно. Отображения не происходит. Может быть, надо массив составить определенного формата? Но какого?
Код страницы:
[[!pdoPage?
&element= `testPdoPage`
&tpl=`@INLINE <p>[[+pagetitle]]</p>`
]]
[[!+page.nav]]
Код сниппета testPdoPage:<?php
$totalVar=$modx->getOption('totalVar', $scriptProperties, 'total');
$modx->setPlaceholder($totalVar,1000);
$limit=$modx->getOption('limit', $scriptProperties, 10);
$offset=$modx->getOption('offset', $scriptProperties, 0);
$data=array();
for($i=1;$i<=$limit;$i++){
$data[$i]=array('ids'=>$offset+$i, 'pagetitle'=>'Page ' . ($offset+$i) );
}
print_r($data);
return $data;
Вроде совсем простой код. Из документации: «Данный сниппет должен понимать параметры &page и &limit.» Мой — принимает, и даже отрабатывает, простейшим образом.Результат — на рис.
Где же ошибка (кроме той, что в генах :) )? Навигация работает исправно. Отображения не происходит. Может быть, надо массив составить определенного формата? Но какого?
Отображения не происходитА что ты сделал в сниппете для этого отображения? Где оформление результата в указанный чанк?
Я вижу только print_r($data); — что и приводит к распечатыванию данных на экране. Читай дальше, что ли.
И кстати, работать с @INLINE чанками MODX по умолчанию не умеет. Если хочешь их использовать, то нужно подключать pdoTools.
Мда… Вот ведь как…
Когда по кодам pdo* полазил, только тогда понял очевидную же вещь, которая есть и в мануалах — то, что pdoPage обёртка и сама выходные данные вызываемого сниппета не форматирует. А форматировать выходной массив нужно в самом сниппете. А для полноты ощущений надо в том же сниппете подключить pdoTools, и настанет счастье.
Спасибо за подсказки и терпение! )
Когда по кодам pdo* полазил, только тогда понял очевидную же вещь, которая есть и в мануалах — то, что pdoPage обёртка и сама выходные данные вызываемого сниппета не форматирует. А форматировать выходной массив нужно в самом сниппете. А для полноты ощущений надо в том же сниппете подключить pdoTools, и настанет счастье.
Спасибо за подсказки и терпение! )
Да, pdoPage, как и getPage, просто разбивает данные другого сниппета на страницы.
А вот задача сниппета — всё выбрать и оформить.
А вот задача сниппета — всё выбрать и оформить.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.