Новое поле товара

Не могу создать у товара MiniShop2 поле типа селект.

Нужно чтобы было вот так:

<select>
	<option value="1">Да</option>
	<option value="0">Нет</option>
</select>

Пробовал уже разные способы, один из них:
miniShop2.plugin.ms2NewFields = {
	getFields: function(config) {
		return {
			available: {
				xtype: 'minishop2-combo-autocomplete'
				,minChars: 1
				,description: '<b>[[+available]]</b>
' + _('ms2_product_dimension')
				,mode: 'local'
				,editable: false
				,store: new Ext.data.SimpleStore({
					fields: ['available']
					,data: [[0, 'Да'], [1, 'Нет']] 
				})
            		}
		}
    	}
};
Либо не записывается в базу, либо не выводится в списке варианты (пустые строки)

Пробовал кучу xtype:

  • combo,
  • combo-boolean,
  • modx-combo,
  • modx-compo-property-set
и так далее…

Помогите! :)
Максим
11 декабря 2015, 14:53
modx.pro
2
2 309
0

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

Сергей Шлоков
11 декабря 2015, 19:07
0
Раз уж начали переопределять Store, то делайте это до конца. Где displayField, valueField?
В fields одно значение, а в data — два. Исправляйте.
    Максим
    11 декабря 2015, 19:18
    1
    0
    а что писать в эти поля?

    displayField: ?
    ,valueField: ?


    В fields одно значение, а в data — два. Исправляйте.


    что это значит?

    Спасибо конечно за ответ, но как-то не очень понятно…
      Сергей Шлоков
      11 декабря 2015, 19:31
      0
      displayField — то что будет отображаться в списке
      valueField — значение выбранного.

      Вы пишите в data 2 значения, т.е. 2 поля
      [0, 'Да']
      А в fields указываете название только одного поля.

      Можно сделать например так
      ...
      ,store: new Ext.data.ArrayStore({
      	fields: ['available','displayField']
      	,data: [[0, 'Да'], [1, 'Нет']] 
      })
      ,displayField: 'displayField'
      ,valueField: 'available'
      ...
        Максим
        11 декабря 2015, 19:39
        0
        О… вот оно как )) спасибо, сейчас попробую ))
          Максим
          11 декабря 2015, 20:24
          0
          Заработало) Спасибо еще раз, помог)

          Подскажи еще, почему-то работает только с:
          xtype: 'minishop2-combo-autocomplete'
          Если поменять на combo или modx-combo, то не работает (в базу не записывается).
          Просто с minishop2-combo-autocomplete поле справа обрывается, придираюсь конечно, но не красиво как-то )

            Сергей Шлоков
            11 декабря 2015, 20:33
            0
            Потому что в minishop2-combo-autocomplete определены свойства name и hiddenName формы. Именно они отправляют значение в базу.
              Максим
              11 декабря 2015, 20:41
              0
              т.е с
              xtype:combo,
              xtype:modx-combo
              работать не будет?
              и получается никак не сделать справа стрелочки у поля?

              просто рылся в файлах modx, нашел вот такую штуку (не знаю что это, но вроде xtype:combo, и значения 2 в data, как у меня...):
              {
                          id: this.ident+'sortSelect'
                          ,xtype: 'combo'
                          ,typeAhead: true
                          ,triggerAction: 'all'
                          ,width: 100
                          ,editable: false
                          ,mode: 'local'
                          ,displayField: 'desc'
                          ,valueField: 'name'
                          ,lazyInit: false
                          ,value: MODx.config.modx_browser_default_sort || 'name'
                          ,store: new Ext.data.SimpleStore({
                              fields: ['name', 'desc'],
                              data : [
                                  ['name', _('name')]
                                  ,['size', _('file_size')]
                                  ,['lastmod', _('last_modified')]
                              ]
                          })
                          ,listeners: {
                              select: {
                                  fn: this.sortStore
                                  ,scope: this
                              }
                          }
                Сергей Шлоков
                11 декабря 2015, 22:16
                0
                Почему нельзя, можно. Надо просто определить эти свойства
                ...
                ,name: 'available'
                ,hiddenValue: 'available'
                ...
                А стрелочка должна быть. Глюк какой-то. А triggerAction: 'all' стоит?
                  Максим
                  11 декабря 2015, 22:48
                  0
                  ...
                  ,name: 'available'
                  ,hiddenValue: 'available'
                  ...
                  а куда это нужно вставлять? туда нужно название моего поля прописывать (available)?
                  просто я вставил на одном уровне с xtype, но ничего не поменялось… или в store нужно?

                  А стрелочка должна быть.
                  когда combo или modx-combo, они есть, а minishop2-combo-autocomplete — их нет…

                  Глюк какой-то. А triggerAction: 'all' стоит?

                  не стоит, но и с ним глюк со стрелочками не исчезает…
                    Сергей Шлоков
                    12 декабря 2015, 07:17
                    0
                    У minishop2-combo-autocomplete она скрыта принудительно (эмулируется поле редактирования).
                    hideTrigger: true
                    Нужно выставить в false. Но тогда это не будет похоже на поле автодополнения, а будет select.

                    ,name: 'available'
                    ,hiddenValue: 'available'
                    нужно выставлять на уровне xtype. Это нужно для того, чтобы данные сохранялись (для modx-combo и combo).
                      Максим
                      12 декабря 2015, 10:31
                      0
                      Все, появились стрелочки ) Спасибо в 101-й раз )

                      Но modx-combo и combo все равно не работают:

                      available: {
                      //	xtype		: 'minishop2-combo-autocomplete'
                      	xtype		: 'modx-combo'
                      	,description	: '<b>[[+available]]</b>
                      ' + _('ms2_product_available_help')
                      	,mode		: 'local'
                      	,editable	: false
                      	,displayField	: 'name'
                      	,valueField	: 'value'
                      	,hideTrigger	: false
                      	,triggerAction	: 'all'
                      	,name 		: 'available'
                      	,hiddenValue 	: 'available'
                      	,store		: new Ext.data.ArrayStore({
                      		fields	: ['value', 'name']
                      		,data	: [
                      			[0, 'На заказ']
                      			,[1, 'В наличии']
                      		]
                      	})
                      }
                      П.С.: а ты откуда это все знаешь? где-то инструкция по этому всему есть?
                        Сергей Шлоков
                        12 декабря 2015, 14:35
                        +1
                        Но modx-combo и combo все равно не работают:
                        Гадать сложно. Проще на натуре выяснять.

                        П.С.: а ты откуда это все знаешь? где-то инструкция по этому всему есть?
                        Есть. Официальная документация и гугл/яндекс.
                        Да прибудет с тобой сила терпения! :)
                        Максим
                        27 января 2018, 08:52
                        0
                        Привет! Подскажи, пожалуйста, по этой теме modx.pro/help/14426/
    Виталий Греков
    11 декабря 2015, 19:14
    0
    Если я вас правильно понял, то это вам должно помочь
      Максим
      11 декабря 2015, 19:25
      0
      Насколько я понял, в том примере в базу так и записывается то что выбирается из списке "[['Мужской'],['Женский'],['Унисекс']]".
      Мне нужно по чтоб выбрав 'Мужской' в базу добавлялось значение 1, 'женский' — 2 и так далее.
      Как в нормальном html select.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      15