Вопросы по modExtra

Свежие сводки с полей:
К сожалению не получил ни одного ответа на свои вопросы, с одним из них разобрался самостоятельно.
Попробую еще раз, от меня не убудет.
Сейчас интерфейс выглядит вот так:




Основных вопросов на данный момент 2:
1) По первому и второму пункту из скриншота- хочу сделать, чтобы в первом столбце выводился id категории, во втором название категории. Сейчас в обоих выводится ID категории.

Как я понимаю для второго столбца нужно написать свой рендер. Как лучше получать данные? Можно сделать через процессор (наверное), но мне не нравится, что для каждой строки будет выполняться этот процессор.
Сейчас рендер выглядит вот так и ждет редактирования:





2) По третьему полю из скриншота: это глубина поиска товаров, хочу по умолчанию проставить 10. Каким образом это можно сделать?

Есть еще один вопрос, но он не так критичен: компонент добавляет плагин для минишопа с новым полем товара, но не получается добавить подпись в словарь для этого поля.
Есть ли возможность это сделать?

Функционал вроде бы готов, остались вот такие правки по интерфейсу. Возможно выложу компонент в открытый доступ, зависит от начальства.

UPD
По первому вопросу, похоже, разобрался: достаточно было отредактировать getlist процессор
Олег
26 мая 2017, 08:17
modx.pro
1 254
0

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

Алексей Ерохин
26 мая 2017, 12:08
+1
1) Получайте название в своем процессоре, который заполняет этот грид, и не нужен будет рендерер (не забудьте поменять dataIndex и добавить получение в Store)
2) В базе данных по умолчанию 10, в mysql map тоже самое, можно в процессоре, а можно и в extjs: emptyText
    Олег
    26 мая 2017, 12:38
    0
    Спасибо за отклик!
    По первому вроде бы успел разобраться, не успел обновить информацию в посте.
    По второму — к сожалению emptyText это плейсхолдер, т.е. не является значением. В mySQL и в map значение проставлено, но не подставляется при создании.

    В документации также есть параметр value, но он почему-то не отрабатывает.
    {
                xtype: 'numberfield',
                fieldLabel: _('discountms2_item_depth'),
                name: 'depth',
                id: config.id + '-depth',
                anchor: '99%',
                allowBlank: false,
                value: '0',
                emptyText: '10',
                value: '10',
            },
    Вот такой вызов сейчас.
      Алексей Ерохин
      26 мая 2017, 12:46
      +1
      Странно, в документации написано, что отправляется на сервер
      The default text to place into an empty field (defaults to null). Note: that this value will be submitted to the server if this field is enabled and configured

      У вас value 2 раза, может в этом дело?
        Олег
        26 мая 2017, 12:55
        0
        Не заметил, что одно value осталось — результат прошлых попыток.
        Нет, к сожалению оно не работает в любом количестве.

        emptyText — аналог placeholder=«test» в html. При клике по полю с указанным emptyText значение пропадает, ну и валидацию не проходит.
        prntscr.com/fcag1i
        Вот, как это выглядит — значение не учитывается.
          Алексей Ерохин
          26 мая 2017, 13:12
          +1
          Попробуйте на событие рендера повесить простановку значения, либо валидация

          validateOnBlur: true, //валидация при потере фокуса
          validator: function(value) {
          	if (value.length == 0) {
          	//ставим значение в поле	если оно пусто	
          	}			
          }
      Олег
      26 мая 2017, 13:13
      0
      Подскажите, пожалуйста, а что такое Store? Первый раз про такую штуку слышу.
        Алексей Ерохин
        26 мая 2017, 13:22
        +1
        Store — это хранилище данных. Данные можно получать, записывать, удалять, сортировать
        В гридах в modx, данные получаются через JsonStore
        Вот параметры remote store в гриде:
        url: crm.config.connector_url
        		,baseParams: {
        			action: 'mgr/user/getlist',
        			sort: 'id',
        			dir: 'desc'
        		}
        		,fields: ['id','username', 'fullname', 'email']
        		,remoteSort: true
        А вот например локальный

        var typeofattachment = new Ext.data.ArrayStore({
            ,fields: [{name: 'name', type: 'string'}]
            ,data: [['C/CS'],['M12']]
        });


          Олег
          26 мая 2017, 13:34
          0
          Пока не разобрался, что это, но на заметку взял. Благодарю!

          По первому вопросу все получилось, я так понял store указывается в getFields.
          К сожалению для каждой строки все равно пришлось делать запрос к базе данных, но зато не пришлось вызывать для этого отдельный процессор.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8