Я отвечаю за создание небольшого платежного модуля. Конфигурация должна управляться с помощью простого CRUD, и я использую класс HelperList для отображения таблицы с записями, хранящимися в базе данных. Один из структуры базы данных таблицы аналогична этойДействие статуса HelperList с ajax
'CREATE TABLE IF NOT EXISTS '._DB_PREFIX_.'MODULE_ITEM
(
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`active` VARCHAR(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;'
Таким образом, значение list_fields подобно этому
array(
'id' => array(
title' => $this->l('Id'),
//'width' => 140,
'type' => 'text',
'align' => 'center'
),
'name' => array(
'title' => $this->l('Name'),
//'width' => 140,
'type' => 'text',
'align' => 'center'
),
'active' => array(
'title' => $this->l('Status'),
//'width' => 140,
'active' => 'statusItem',
'type' => 'boolean',
'align' => 'center',
'ajax'=> true
)
);
Как я намерен включить или отключить элемент с помощью кнопки я использую «активный 'и' ajax 'для этого конкретного поля, а при визуализации на странице конфигурации модуля ссылка, сгенерированная для рассматриваемого столбца, выглядит примерно так: index.php?controller=AdminModules&configure=Example&item_id=4&statusItem&action=statusItem&ajax=1&(...)
. Обратите внимание, что statusItem - это имя действия.
С другой стороны, я написал эту функцию в главном файле модуля, который должен изменить статус элемента.
public function ajaxProcessStatusItem()
{
$id=(int)Tools::getValue('item_id');
$value=(int) Db::getInstance()->executeS($this->createSelectQuery('module_item','item_id',$id))[active];
Db::getInstance()->update('module_item', array('active' => !$value), 'item_id='.$id);
die();
}
Я использую this статью официальной документации для создания списка, но независимо от того, какое имя я использую («ajaxProcess», «ajaxProcessSatusItem», «statusItem», и каждые заглавные буквы не вариациям я мог думать) все, что я получаю, - это пустая страница в ответе и никаких изменений в статусе. Я посмотрел исходный код, и в классе HelperList нет комментариев относительно того, как следует вызывать функцию.
Любая помощь будет оценена по достоинству.
Действительно ли поле «active» должно быть логическим? В качестве альтернативы я использовал ajaxProcessStatusItem, аналогичный показанному в AdminStatusesController, но это тоже не сработало. – Trickylastname
Я обновил ответ – gskema