UMIhelp
Разработка дополнительного функционала => Разработка модулей => Тема начата: Byte от 18 Мая 2013, 11:40:43
-
Продолжаю разрабатывать свой модуль, застопорился на выводе данных в xml виде, опять же делаю по примеру из доков, но почему-то макрос не выводит самих страниц, количество выводит, а итемы нет, вот код макроса:
public function allpages($template = "default") {
$sel = new selector('pages');
if(!$template) $template = "default";
list($template_block, $template_line) = $this->loadTemplates("./tpls/MyPages/{$template}.tpl", "pages_block", "pages_block_line");
$oHierarchy = umiHierarchy::getInstance();
$per_page = 20;
$curr_page = (int) getRequest('p');
$block_arr = Array();
$sel = new selector('pages');
$sel->types('hierarchy-type')->name('MyPages', 'MyPage');
$sel->limit($per_page, $curr_page);
$result = $sel->result();
$total = $sel->length();
$lines = Array();
foreach($result as $element_id) {
$line_arr = Array();
$element = $oHierarchy->getElement($element_id);
$line_arr['attribute:id'] = $element_id;
$line_arr['node:content'] = "This is item";
templater::pushEditable("MyPages", "MyPage", $element_id);
$lines[] = self::parseTemplate($template_line, $line_arr, $element_id);
}
$block_arr['subnodes:items'] = $lines;
$block_arr['per_page'] = $per_page;
$block_arr['total'] = $total;
return self::parseTemplate($template_block, $block_arr);
}
если это важно, то шаблон /tpls/MyPages/default.tpl существует, но он пуст
Буду всем благодарен за помощь =)
-
подозреваю, что $result = $sel->result(); почему-то возвращает пустой массив, а почему не знаю, ведь страницы есть и их количество макрос видит, ответ макрос дает такой:
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="MyPages" method="allpages" generation-time="0.001256">
<items></items>
<per_page>20</per_page>
<total>3</total>
</udata>
-
Нашел причину выдачи пустого массива, непонятно почему, но мешала строка $sel->limit($per_page, $curr_page); когда ее убрал, итемы начали выводиться, но полезли ошибки, говорящие о том, что объект класса umiHierarhiElement не может быть преобразован в int, пока нашел только одно решение, получил id объекта , который служит источником данных для страницы (getObjectId()), функция выдала значение на 334 единицы больше, чем id страницы, соответственно я вычел эти 334 единицы и получил id объекта, таким образом это чудовище у меня заработало, но мое решение- костыль, если кто знает где я накривокосячил, ткните плиз носом.