Таблицы в админке

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 29 декабря 2016 в 17:50
Друзья всех с наступающим!

Хочу создать таблицу в админке но все делаю как написано но не выводят данные сейчас с вами поделюсь файлами как у меня.

Первый файл Backend.php

  1. <?php
  2. class backendSport extends cmsBackend {
  3. public function actionIndex(){
  4. $grid = $this->loadDataGrid('sport');
  5. return cmsTemplate::getInstance()->render('backend/index', array(
  6. 'grid' => $grid
  7. ));
  8. }
  9. }
  10.  
Второй файл grids/grid_sport.php

  1. <?php
  2. function grid_sport($controller){
  3.  
  4. $options = array(
  5. 'is_sortable' => true, // сортировать по столбцам
  6. 'is_filter' => true, // фильтровать по некоторым столбцам
  7. 'is_pagination' => true, // выводить постранично
  8. 'is_draggable' => false, // нельзя перетаскивать мышкой
  9. 'order_by' => 'date_pub',// сортировать по дате публикации
  10. 'order_to' => 'desc', // по убыванию (сначала новые)
  11. 'show_id' => true // показывать столбец id
  12. );
  13. $columns = array(
  14. 'id' => array(
  15. 'title' => 'id',
  16. 'width' => 30,
  17. 'filter' => 'exact'
  18. ),
  19. 'author' => array(
  20. 'title' => LANG_AUTHOR,
  21. 'filter' => 'like'
  22. ),
  23. 'date_pub' => array(
  24. 'title' => LANG_DATE,
  25. 'filter' => 'like',
  26. 'handler' => function ($field, $row){
  27. return date('d.m.Y', strtotime($field));
  28. }
  29. ),
  30. 'content' => array(
  31. 'title' => LANG_MESSAGE,
  32. 'filter' => 'like',
  33. 'handler' => function ($field, $row){
  34. return mb_strlen($field) > 100 ? mb_substr($field, 0, 100) : $field;
  35. },
  36. 'href' => href_to('sport', 'message', '{id}')
  37. )
  38. );
  39. $actions = array(
  40. 'title' => LANG_VIEW,
  41. 'class' => 'view',
  42. 'href' => href_to('sport', 'message', '{id}')
  43. ),
  44. 'title' => LANG_EDIT,
  45. 'class' => 'edit',
  46. 'href' => href_to($controller->root_url, 'edit', '{id}')
  47. ),
  48. 'title' => LANG_DELETE,
  49. 'class' => 'delete',
  50. 'href' => href_to($controller->root_url, 'delete', '{id}'),
  51. 'confirm' => LANG_GUESTBOOK_MESSAGE_DELETE_CONFIRM,
  52. ),
  53. );
  54. return array(
  55. 'options' => $options,
  56. 'columns' => $columns,
  57. 'actions' => $actions
  58. );
  59. }
model.php

  1. public function getMessages(){
  2. return $this->get('sport');
  3. }
  4. public function getMessagesCount(){
  5. return $this->getCount('sport');
  6. }
  7.  
Третий файл (actions/ajax.php)

  1. <?php
  2. class actionSportAjax extends cmsAction {
  3. public function run{
  4. if (!$this->request->isAjax()) { cmsCore::error404(); }
  5. $grid = $this->loadDataGrid('sport');
  6. $this->model->setPerPage(admin::perpage);
  7. $filter = array();
  8. $filter_str = $this->request->get('filter', '');
  9. if ($filter_str){
  10. parse_str($filter_str, $filter);
  11. $this->model->applyGridFilter($grid, $filter);
  12. }
  13. $total = $this->model->getMessagesCount();
  14. $perpage = isset($filter['perpage']) ? $filter['perpage'] : admin::perpage;
  15. $pages = ceil($total / $perpage);
  16. $messages = $this->model->getMessages();
  17. $template = cmsTemplate::getInstance();
  18. $template->renderGridRowsJSON($grid, $messages, $total, $pages);
  19. $this->halt();
  20. }
  21. }
  22.  
и index.tpl
  1. <?php $this->renderGrid($this->href_to('ajax'), $grid); ?>

#2 29 декабря 2016 в 18:02
Какую ошибку выдаёт?
#3 29 декабря 2016 в 18:06


Какую ошибку выдаёт?

Loadырь

Ошибки нету просто пусто, не выводит список таблицы (
#4 29 декабря 2016 в 18:16

Ошибки нету просто пусто, не выводит список таблицы (

Нико
Что бы увидит ошибку, включите Отладку
В хроме откройте страницу с таблицей и нажмите F12
В Инструменте разработчика, выбрать Network — XHR — запрос — Preview
Иллюстрация
#5 29 декабря 2016 в 18:24


Ошибки нету просто пусто, не выводит список таблицы (

Нико
Что бы увидит ошибку, включите Отладку
В хроме откройте страницу с таблицей и нажмите F12
В Инструменте разработчика, выбрать Network — XHR — запрос — Preview
Иллюстрация

Evanescence
Отладка включена.
Да сделал как вы сказали там пишет

ajax (Parse error: syntax error, unexpected '{', expecting '(' in C:\OpenServer\domains\localhost\system\controllers\sport\backend\actions\ajax.php on line 6)

Не могу найти ошибку делал как в описании.
#6 29 декабря 2016 в 18:26
Нико, в конец файла ajax.php добавьте }
#7 29 декабря 2016 в 18:27


Нико, в конец файла ajax.php добавьте }

Evanescence

Он был просто я не правильно скопировал
#8 29 декабря 2016 в 18:33


Нико, в конец файла ajax.php добавьте }

Evanescence

По файлам я все правильно сделал? Проблема кажется внутри

  1. public function run {
  2. if (!$this->request->isAjax()) { cmsCore::error404(); }
  3. $grid = $this->loadDataGrid('sport');
  4. $this->model->setPerPage(admin::perpage);
  5. $filter = array();
  6. $filter_str = $this->request->get('filter', '');
  7. if ($filter_str){
  8. parse_str($filter_str, $filter);
  9. $this->model->applyGridFilter($grid, $filter);
  10. }
  11. $total = $this->model->getMessagesCount();
  12. $perpage = isset($filter['perpage']) ? $filter['perpage'] : admin::perpage;
  13. $pages = ceil($total / $perpage);
  14. $messages = $this->model->getMessages();
  15. $template = cmsTemplate::getInstance();
  16. $template->renderGridRowsJSON($grid, $messages, $total, $pages);
  17. $this->halt();
  18. }
#9 29 декабря 2016 в 18:37


Нико, в конец файла ajax.php добавьте }

Evanescence

Все исправил, спасибо всем взял тупо ajax вставил в backend как action
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.