ExtJS и combobox

Доброй ночи. Почему-то некорректно срабатывает combobox, а точнее вообще не срабатывает. добавлял 2 combobox'a для 2 полей(категории и ФИО) для combobox'a с категорией все впорядке, combobox ФИО делал по аналогии(копи паст и переименовал). Но Категория работает корректно а ФИО нет, не могу понять где что пропустил. вот собственно код.
На форме обновления
Ext.extend(DriverLicense.window.UpdateLicenses, MODx.Window, {

	getFields: function (config) {
		return [{
			xtype: 'hidden',
			name: 'id',
			id: config.id + '-id',
		}, {
			xtype: 'textfield',
			fieldLabel: _('driverlicense_license_number'),
			name: 'number',
			id: config.id + '-number',
			anchor: '99%',
			allowBlank: false,
		}, 		{
			xtype: 'driverlicense-combo-categorycombo',
			fieldLabel: _('driverlicense_license_category'),
			name: 'category',
			id: config.id + '-category',
			anchor: '99%',
			allowBlank: false,
		},{
			xtype: 'datefield',
			fieldLabel: _('driverlicense_license_date_open'),
			name: 'date_open',
			id: config.id + '-date_open',
			anchor: '99%',
			format: 'Y-m-d',
            submitFormat: 'Y-m-d H:i:s',
			allowBlank: false,
		},  {
			xtype: 'driverlicense-combo-natfacecombo',
			fieldLabel: _('driverlicense_license_name'),
			name: 'names',
			id: config.id + '-names',
			anchor: '99%',
			allowBlank: false,
		}, {
			xtype: 'textfield',
			fieldLabel: _('driverlicense_license_issuedby'),
			name: 'issuedby',
			id: config.id + '-issuedby',
			anchor: '99%',
			allowBlank: false,
		}, {
			xtype: 'textfield',
			fieldLabel: _('driverlicense_license_mark'),
			name: 'mark',
			id: config.id + '-mark',
			anchor: '99%',
			allowBlank: true,
		}/*, {
			xtype: 'driverlicense-combo-categorycombo',
			fieldLabel: _('driverlicense_license_active'),
			name: 'active',
			id: config.id + '-active',
			anchor: '99%',
			allowBlank: false,
			
		}*/];
	}

});
Ext.reg('driverlicense-licenses-window-update', DriverLicense.window.UpdateLicenses);
в файле combo.js
DriverLicense.combo.CategoryCombo = function(config) {
    config = config || {};
    Ext.applyIf(config,{
        name: 'category'
        ,hiddenName: 'category'
        ,displayField: 'name'
        ,valueField: 'id'
        ,url: DriverLicense.config.connectorUrl
        ,baseParams: { action: 'mgr/category/getlist' }
        ,fields: ['id','name']
        ,pageSize: 20        
        ,typeAhead: true
        ,editable: true
    });
    DriverLicense.combo.CategoryCombo.superclass.constructor.call(this,config);
};
Ext.extend(DriverLicense.combo.CategoryCombo,MODx.combo.ComboBox);
Ext.reg('driverlicense-combo-categorycombo',DriverLicense.combo.CategoryCombo);


DriverLicense.combo.NatfaceCombo = function(config) {
    config = config || {};
    Ext.applyIf(config,{
        name: 'natface'
        ,hiddenName: 'natface'
        ,displayField: 'name'
        ,valueField: 'id'
        ,url: DriverLicense.config.connectorUrl
        ,baseParams: { action: 'mgr/natface/getlist' }
        ,fields: ['id','name']
        ,pageSize: 20        
        ,typeAhead: true
        ,editable: true
    });
    
    DriverLicense.combo.NatfaceCombo.superclass.constructor.call(this,config);
};
Ext.extend(DriverLicense.combo.NatfaceCombo,MODx.combo.ComboBox);
Ext.reg('driverlicense-combo-natfacecombo',DriverLicense.combo.NatfaceCombo);
В процессе тестирования выявил что с xtype: 'textfield' работает форма корректно(данные изменяются). Так же в файл update.class.php вывел результат переданных значений

$names = trim($this->getProperty('names'));
        $this->modx->log(modX::LOG_LEVEL_ERROR, '????????????????'.$names);    
        $this->modx->log(modX::LOG_LEVEL_ERROR, '!!!!!!!!!!!!!!!!!!'.$this->object->get('names'));  
        
        $category = trim($this->getProperty('category'));
        $this->modx->log(modX::LOG_LEVEL_ERROR, '????????????????------'.$category);    
        $this->modx->log(modX::LOG_LEVEL_ERROR, '!!!!!!!!!!!!!!!!!!-----'.$this->object->get('category'));
и на выходе получил joxi.ru/YmEDka5FzE7er6
так же приложу часть бд что бы было видно что да как joxi.ru/DrlVOoWuOPzo2P joxi.ru/l2Z6VRqIW4yg2J

Подскажите пожалуйста что я мог упустить, если с textfield поле natface работает хорошо, а с combobox нет… Уже 2 дня промучался так и не понял в чем беда.
Pavel
12 мая 2015, 20:25
modx.pro
3 005
0

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

Сергей Шлоков
13 мая 2015, 08:57
0
А в чем проблема: не создается в окне или не сохраняется значение?
    Pavel
    13 мая 2015, 09:16
    0
    не передается значение id с комбобокса в другую таблицу. Постоянно на выходе пустое значение. joxi.ru/1A5p9xYhyekV2E Хотя в сам комбобокс поступаюи и id и name joxi.ru/xAe0eDohxQ6N2y, id проверял через displayField: 'id'.

    Только что попробовал подключить нв столбец ФИО работающий комбобокс(Категории) и та же ситуация, на поле ФИО не происходит изминений при выборе какого либо пункста из комбобокса, при этом само поле Категории с комбобоксом Категории работает нормально.
    Куда рыть уже не знаю
    PS. Сейчас таблица в виде joxi.ru/KAgGMoVTbw6kAl, когда изменяю поле ФИО на
    editor: { xtype: 'driverlicense-combo-natfacecombo' ,renderer: true},
    получаю joxi.ru/xAe0eDohxQPN2y Но в окнах создания и редактирования почему-то происходит непонятная фигня(((
      Сергей Шлоков
      13 мая 2015, 09:24
      0
      У комбобоксса с именами укажи
      name: 'names'
      ,hiddenName: 'names'
        Pavel
        13 мая 2015, 09:29
        0
        елы-палы!!! Сработало!!! Спасибо!!!!!
        Еще один вопросик можно?)
        Мы можем как-то выводить в комбобоксе не одно значение в displayField: 'name' а несколько, через запятую к примеру?
          Сергей Шлоков
          13 мая 2015, 09:34
          0
          Комбобокс выводит то, что ему пришлет mgr/natface/getlist. Сформируй поле name как тебе хочется. Только что тогда будет значить id?
          П.С. Для выражения спасибо можно можно использовать плюсик. :)
            Pavel
            13 мая 2015, 09:38
            0
            к примеру я хотел бы вывести name, passport в комбобоксе, значение id при этом же не поменяется, т.к. name и passport соответствуют одному id(человеку). name, passport находятся в mgr/natface/getlist
              Сергей Шлоков
              13 мая 2015, 10:12
              0
              Ну как -то так
              public function prepareRow(xPDOObject $object) {
              	$row = $object->toArray();
              	$row['name'] = $row['name'].' : '.$row['passport'];
              	return $row;
                Pavel
                14 мая 2015, 18:49
                0
                я так понял это на PHP, а мне нужно на ExtJS, типа для пользователя отображается одно, но в базу вносится другое.

                Вот я пытался сделать так

                DriverLicense.combo.NatfaceCombo = function(config) {
                    config = config || {};
                    Ext.applyIf(config,{
                        name: 'names'
                        ,hiddenName: 'names'
                        ,displayField: 'name'
                        
                        ,url: DriverLicense.config.connectorUrl
                        ,baseParams: { action: 'mgr/natface/getlist' }
                        ,fields: ['id','name']
                        ,pageSize: 20        
                        ,typeAhead: true
                        ,editable: true
                        ,tpl: '<tpl for="."><div class="x-combo-list-item" >{name} {id} </div></tpl>'
                        ,valueField: 'id'
                    });
                    
                    DriverLicense.combo.NatfaceCombo.superclass.constructor.call(this,config);
                };
                Ext.extend(DriverLicense.combo.NatfaceCombo,MODx.combo.ComboBox);
                Ext.reg('driverlicense-combo-natfacecombo',DriverLicense.combo.NatfaceCombo);
                и получаю такой результат joxi.ru/12MjQYRuQMkVAJ
                но когда я выбираю один из пунктов получаю пустое поле(как будто ничего и не выбирал) joxi.ru/gmvgevXSRLdd2a
                  Сергей Шлоков
                  15 мая 2015, 16:28
                  0
                  Насколько я понял твою задачу, достаточно в процессоре mgr/natface/getlist прописать функцию
                  public function prepareRow(xPDOObject $object) {
                  	$row = $object->toArray();
                  	$row['name'] = $row['name'].', '.$row['passport'];
                  	return $row;
                  }
                  И всё!
                  Если принципиально на ExtJS, то тут уж сам, помочь не смогу.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    9