Добавить свою панельку управления

Автор Огонек, 19 июля 2017, 21:11:33

« назад - далее »

Огонек

Здравствуйте.
Хочу сделать следующее:
Для более удобной фильтрации заказов добавить свою панельку с кнопками по образу панельки kpi и расположенную под ней (под kpi).
как создать tpl файл понимаю, а вот как её "подключить" чего-то совсем мозг не работает.

DarinSr

С помощью модуля можно заменить стандарный шаблон на свой или создать новый. Создаете контроллер /mymodule/controllers/admin/
class AdminMyModuleController extends ModuleAdminController
В нем определяете поля шаблона и создаете свой шаблон /mymodule/views/templates/admin/

Огонек

Панельку добавил, кнопки для фильтрации разместил, через ajax в контроллер передаю параметры для фильтрации заказов, для примера самый простой случай:

'current_state = 1'

А вот "прикрутить" это условие к фильтрации и после этого обновить страницу никак не получается.
Обновить-то получается, но конструкция типа

$this->_where = ' AND current_state = 1';

ничего не меняет - фильтр не работает.
Не правильной дорогой иду?



mistral

'filter_key' => 'переменная фильтра'
Фильтр определяют при формировании fields_list.
Специально запрос писать не обязательно.

Огонек

Цитата: mistral от 27 июля 2017, 09:54:55
'filter_key' => 'переменная фильтра'
Фильтр определяют при формировании fields_list.
Специально запрос писать не обязательно.
Этот способ подходит если нужно отфильтровать по одному значению поля, т.е.

where current_state = 1

или

where current_state = 5

мне же нужно получить

where current_state = 1 or current_state = 5 or current_state = 7


Я просто тренируюсь на самом простом примере:

public function ajaxProcesssetMyOwnFilter()
  {
     $filter_value = (int)Tools::getValue('filter_value');
     $this->_filter = 'and current_state = '.$filter_value;
     Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token.'&submitFilterorder=1');
  }

Проблема в том, что редирект не происходит. Уже 3 часа танцую вокруг этих трех строк.

Миколас

Зачем редирект с Ajax? Данные обновятся без перезагрузки.

Огонек

Цитата: Миколас от 27 июля 2017, 15:13:05
Зачем редирект с Ajax? Данные обновятся без перезагрузки.
После обновления со стороны скрипта

location.reload();

условия фильтра

$this->_filter = 'and current_state = '.$filter_value;

игнорируются

mistral

Цитата: Огонек от 27 июля 2017, 14:35:30
Цитата: mistral от 27 июля 2017, 09:54:55
'filter_key' => 'переменная фильтра'
Фильтр определяют при формировании fields_list.
Специально запрос писать не обязательно.
Этот способ подходит если нужно отфильтровать по одному значению поля, т.е.

where current_state = 1

или

where current_state = 5

мне же нужно получить

where current_state = 1 or current_state = 5 or current_state = 7


Я просто тренируюсь на самом простом примере:

public function ajaxProcesssetMyOwnFilter()
  {
     $filter_value = (int)Tools::getValue('filter_value');
     $this->_filter = 'and current_state = '.$filter_value;
     Tools::redirectAdmin(self::$currentIndex.'&token='.$this->token.'&submitFilterorder=1');
  }

Проблема в том, что редирект не происходит. Уже 3 часа танцую вокруг этих трех строк.
Фильтровать можно по многим значениям. Вы сами определяете функции выборки данных. Определили переменную для фильтров и создали запрос

$filter_ids[] = Tools::getValue('filter_id');
...
$sql .= WHERE `current_state` IN (  // циклом из массива получить индексы

Adik

Цитата: mistral от 27 июля 2017, 15:39:48
Фильтровать можно по многим значениям. Вы сами определяете функции выборки данных. Определили переменную для фильтров и создали запрос

$filter_ids[] = Tools::getValue('filter_id');
...
$sql .= WHERE `current_state` IN (  // циклом из массива получить индексы

В дефолтной теме админки нельзя.
Поля фильтров не разрешают выбор множества значений.

Цитата: Огонек от 27 июля 2017, 14:35:30

мне же нужно получить

where current_state = 1 or current_state = 5 or current_state = 7

Не поддерживается такая функция в prestashop. Для переменной фильтра только одно значение.

Огонек

Цитата: Adik от 27 июля 2017, 16:11:05
Не поддерживается такая функция в prestashop. Для переменной фильтра только одно значение.
Конструкция

        $this->_orderBy = 'id_order';
        $this->_orderWay = 'DESC';
        $this->_use_found_rows = true;
$this->_filter = 'and (current_state = 17 or current_state = 4)';

в конструкторе контроллера прекрасно работает
Но мне значение $this->_filter нужно менять динамически по нажатию нужных кнопок пользователем