MS2: доп. поле товара (плагин) типа «checkbox»

Друзья, всем привет!

Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
  • Отображается как 1/0, т.е. цифра (соответственно, checked/unchecked), а не как чекбокс;
  • Если редактировать — появляется checkbox, можно поставить галку (он в момент редактирования пустой вне зависимости от имеющегося значения);
  • После сохранения (перехода на другой товар) — сохраняется значение true или false, вот именно словами (в зависимости от того, была поставлена в чекбокс галка или нет);
  • Если затем перезагрузить страницу, то все значения обратно становятся 0 или 1 (но при этом измененные значения сохраняются, т.е. если я на предыдущем шаге галку ставил, то показывает 1, а если нет, то 0).
Т.е. значение сохраняется по смыслу верно, проблема только с отображением. А хотелсь бы, чтобы было по аналогии с дефолтовыми галками «new», «favorite» и т.д.

Вот так выглядит плагин:



Файл msproductdata.js:

miniShop2.plugin.outofstock = {
    getFields: function(config) {
        return {
            outofstock:{
                xtype:'xcheckbox',
                inputValue:1,
                checked:parseInt(config.record.outofstock),
                description: '<b></b>
' + _('ms2_product_outofstock_help')}
        }
    }
    ,getColumns: function() {
        return {
            outofstock:{width:50, sortable:false,  editor:
            {xtype:'xcheckbox', name: 'outofstock'}}
        }
    }
};

Файл msproductdata.map.inc.php:

<?php
return array(
    'fields' => array(
        'outofstock' => NULL
    )
,'fieldMeta' => array(
        'outofstock' => array(
            'dbtype' => 'tinyint',
            'precision' => '1',
            'attributes' => 'unsigned',
            'phptype' => 'boolean',
            'null' => true,
            'default' => 0,
        )
    )
,'indexes' => array(
        'outofstock' => array (
            'alias' => 'outofstock',
            'primary' => false,
            'unique' => false,
            'type' => 'BTREE',
            'columns' =>
                array (
                    'outofstock' =>
                        array (
                            'length' => '',
                            'collation' => 'A',
                            'null' => false,
                        ),
                ),
        )
    )
);
В БД добавил поле с такими параметрами:

Поле: outofstock
Тип: TINYINT
Длина/значения: 1
По умолчанию: 0
Атрибуты: unsigned
Null: да

Нутром чую, что проблема в msproductdata.js, а именно в части getColumns, но знаний не хватает понять, где именно проблема.

Помогите, кто чем может :)
Павел Ширяев
27 октября 2015, 23:56
modx.pro
4
2 649
0

Комментарии: 4

    Павел Ширяев
    28 октября 2015, 12:55
    0
    Владимир, спасибо, все работает! :)
      Альберт
      09 июля 2020, 15:54
      0
      Можете продублировать решение, если не сложно? :) Ссылка битая, а я что-то запутался в выводах
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4