Как подключить pagebar в админку 2.1.2

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 18 декабря 2014 в 08:58
Может Администраторы ответят или есть уже люди, которые подключили pagebar в админку?
Вообщем вывожу данные из БД с помощью grids — всё делаю на примере компонента Контент, pagebar появляется но при нажатии нечего не происходить, может есть какие нибудь секреты которые я пропустил?)

Иллюстрация
#2 21 декабря 2014 в 10:49

может есть какие нибудь секреты которые я пропустил?

Evanescence
Я себе подключал pagebar в админке на своём компоненте. Столкнулся с такими "секретами" при которых тоже не работало. Выяснил, что основное дело в опциях grid Я нашёл их столько
  1.  
  2. $options = array(
  3. 'is_auto_init' => true,
  4. 'is_sortable' => true,
  5. 'is_filter' => true,
  6. 'is_pagination' => true,
  7. 'is_draggable' => false,
  8. 'is_selectable' => false,
  9. 'order_by' => 'id',
  10. 'order_to' => 'asc',
  11. 'show_id' => true
  12. );
  13.  
так вот если 'is_draggable' = false, то 'order_by' должно быть равно чему-то, кроме 'ordering', например 'id',
и соответственно в функциях обработки grid
должно быть что-то такое
  1.  
  2. $filter = array();
  3. $filter_str = $inCore->request->get('filter');
  4. if ($filter_str){
  5.  
  6. parse_str($filter_str, $filter);
  7. $iforms_model->applyGridFilter($grid, $filter);
  8.  
  9. }
  10.  
  11. $total = $iforms_model->getFormsCount();
  12.  
  13. $perpage = isset($filter['perpage']) ? $filter['perpage'] : iforms::perpage;
  14. $pages = ceil($total / $perpage);
#3 21 декабря 2014 в 18:03
Loadырь, А можете полный код показать?)
вот что у меня:
файл \system\controllers\statusi\backend\actions\statusi_ajax.php
  1. class actionStatusiStatusiAjax extends cmsAction {
  2.  
  3. public function run($id) {
  4. if (!$this->request->isAjax()) {cmsCore::error404();}
  5. $grid = $this->loadDataGrid('statusi');
  6. $model = cmsCore::getModel('statusi');
  7. $model->select('i.id, i.text');
  8. $model->OrderBy('i.id', 'DESC');
  9. $items = $model->getStatusi((int)$id);
  10.  
  11. $filter = array();
  12. $filter_str = $inCore->request->get('filter');
  13. if ($filter_str){
  14. parse_str($filter_str, $filter);
  15. $model->applyGridFilter($grid, $filter);
  16. }
  17. $total = $model->getStatusiCount((int)$id);
  18. $perpage = isset($filter['perpage']) ? $filter['perpage'] : statusi::perpage;
  19. $pages = ceil($total / $perpage);
  20.  
  21. cmsTemplate::getInstance()->renderGridRowsJSON($grid, $items, $total, $pages);
  22. $this->halt();
  23. }
  24.  
  25. }
Только не понял откуда взялся функция applyGridFilter() и надо ли ее создать в модели?

Вот Options из файла system\controllers\statusi\backend\grids\grid_statusi.php

  1. $options = array(
  2. 'is_auto_init' => true,
  3. 'is_sortable' => true,
  4. 'is_filter' => true,
  5. 'is_pagination' => true,
  6. 'is_draggable' => false,
  7. 'is_selectable' => false,
  8. 'order_by' => 'id',
  9. 'order_to' => 'asc',
  10. 'show_id' => true
  11. );
Только теперь на странице статусы т.е. в gird нечего не отображается
#4 21 декабря 2014 в 18:50

Только теперь на странице статусы т.е. в gird нечего не отображается

Evanescence
smile — всё правильно.
вот мой кусок кода из такого же файла —
  1.  
  2. class actionIformsFormsAjax extends cmsAction {
  3.  
  4. public function run(){
  5.  
  6. if (!$this->request->isAjax()) { cmsCore::error404(); }
  7. $inCore = cmsCore::getInstance();
  8.  
  9. $grid = $this->loadDataGrid('forms');
  10.  
  11. $inCore->getController('iforms');
  12. $iforms_model = $inCore->getModel('iforms');
  13. $iforms_model->setPerPage(iforms::perpage);
  14.  
  15. $filter = array();
  16. $filter_str = $inCore->request->get('filter');
  17. if ($filter_str){
  18.  
  19. parse_str($filter_str, $filter);
  20. $iforms_model->applyGridFilter($grid, $filter);
  21.  
  22. }
  23.  
  24. $total = $iforms_model->getFormsCount();
  25.  
  26. $perpage = isset($filter['perpage']) ? $filter['perpage'] : iforms::perpage;
  27. $pages = ceil($total / $perpage);
  28.  
  29. $fields = $iforms_model->getForms();
  30.  
  31. cmsTemplate::getInstance()->renderGridRowsJSON($grid, $fields, $total, $pages);
  32.  
  33. $this->halt();
  34. }
  35. }

откуда взялся функция applyGridFilter() и надо ли ее создать в модели?

Evanescence
она подтягивается сама отсюда — \system\core\model.php — строка 1350

а по вашему коду, не понял зачем вы делаете выборку
  1.  
  2. $model->select('i.id, i.text');
  3. $model->OrderBy('i.id', 'DESC');
  4.  
когда она берётся из $grid
И желательно переменную
  1. $items = $model->getStatusi((int)$id);
получать перед самым выводом в шаблон, после применения фильтров.
#5 21 декабря 2014 в 19:29
Loadырь, Спасибо, всё получилось😊
Проблема решена!!!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.