Перетаскивание строки таблицы в админке

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 14 сентября 2023 в 19:40

Всем привет. Подскажите, пожалуйста, что нужно сделать, чтоб поменять порядок сторок в таблице в админке?

Сделал запись в гриде:         'is_draggable' => true, 'drag_save_url' => href_to($controller->root_url, 'reorder', ['merging_tables']).

Создал экшен «reorder»: 

<?php

class actionMergingtablesReorder extends cmsAction {

    public function run($table_name) {

        if (!$this->model->db->isTableExists($table_name)) {

            return $this->cms_template->renderJSON([
                'error' => true
            ]);
        }

        $items = $this->request->get('items', []);
        if (!$items) {

            return cmsCore::error404();
        }

        $this->model->reorderByList($table_name, $items);

        $cache_keys = explode('_', str_replace(['{', '}'], '', $table_name));

        cmsCache::getInstance()->clean(implode('.', $cache_keys));

        if ($this->request->isAjax()) {

            return $this->cms_template->renderJSON([
                'error'        => false,
                'success_text' => LANG_CP_ORDER_SUCCESS
            ]);
        }

        cmsUser::addSessionMessage(LANG_CP_ORDER_SUCCESS, 'success');

        $this->redirectBack();
    }

}

Что нужно еще?

#4 14 сентября 2023 в 20:12

У меня 2.16.1

vladimir6333

Это даже лучше, смысл тот же. Вы используете уже готовый экшен компонента «admin». Единственное, возможно, но не точно, опция 
'show_id' должна быть равна true или не должно быть этой опции и в самой таблице должны выводится id строк типа этого github.com/instantsoft/icms2/blob/master/system/controllers/admin/grids/grid_controllers_events.php#L19-L21

#5 14 сентября 2023 в 20:51

503 ошибку выдает

Спасибо. Вот так должны быть прописаны опции:        

/*  для перетаскивания  мышкой строк*/
        'is_draggable' => true,
        'drag_save_url' => href_to('admin', 'reorder', ['merging_tables']),
         
        'order_by' => 'ordering',
        'order_to' => 'asc',
        /********************************************/

Я балван поле ordering в таблице не сделал.

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.