modx-combo-boolean страное поведение при сохранени

Всем привет. Решил написать компонент один полезный и приспичило в админке сделать 2 поля с типом modx-combo-boolean и выводом вариантов ответов Да/Нет. В файле с всплывающим окном указано вот что:




{
                            xtype: 'modx-combo-boolean',
                            fieldLabel: _('seopanel_sites_yaca'),
                            name: 'yaca',
                            hiddenName:'yaca',
                            id: config.id + '-yaca',
                            anchor: '99%',
                        },

тоже самое указано и у второго поля

{
                            xtype: 'modx-combo-boolean',
                            fieldLabel: _('seopanel_sites_dmoz'),
                            name: 'dmoz',
                            hiddenName:'dmoz',
                            id: config.id + '-dmoz',
                            anchor: '99%',
                        },
В файле seoPanel\core\components\seopanel\processors\mgr\sites\update.class.php прописал следующее:

$this->setProperty('yaca',  $this->getProperty('yaca') == 'true' ? 1 : 0);
$this->setProperty('dmoz',  $this->getProperty('dmoz') == 'true' ? 1 : 0);
В базу сохраняется 1 или 0, НО ТОЛЬКО У ОДНОГО ПОЛЯ. Почему так происходит не пойму. Если у двух полей выбрать «ДА» сразу, то сохраняется нормально, так же если сразу у двух полей «НЕТ» выбрать, но если один сохранён как «ДА» и пробовать второе поле сохранить как «ДА», то у первого поля сохраняется НЕТ, а у второго ДА. Что делать? Глаз уже замылился(((
Андрей Копп
05 августа 2015, 17:28
modx.pro
1
1 660
0

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

Сергей Шлоков
06 августа 2015, 07:54
0
На вскидку вроде правильно. Определять setProperty нужно в beforeSet().
Попробуй в функции beforeSave() выгрузить свойства в журнал и посмотри чего пишется
public function beforeSave() {
    $this->modx->log(modX::LOG_LEVEL_ERROR, print_r($this->getProperties(),1));
    return true;
}
    Андрей Копп
    07 августа 2015, 20:20
    0
    [2015-08-07 20:17:23] (ERROR @ /seoPanel/assets/components/seopanel/connector.php) Array
    (
        [action] => mgr/sites/update
        [id] => 4
        [domain] => rapcorp.net
        [tic] => 10
        [yaca] => 1
        [yaindex] => 0
        [gooindex] => 0
        [liveinternet] => 0
        [active] => 1
        [domainend] => 0
        [pr] => 3
        [dmoz] => 0
        [yaindex_up] => 0
        [gooindex_up] => 0
        [sorting_id] => 0
    )
    
    [2015-08-07 20:17:28] (ERROR @ /seoPanel/assets/components/seopanel/connector.php) Array
    (
        [action] => mgr/sites/update
        [id] => 4
        [domain] => rapcorp.net
        [tic] => 10
        [yaca] => 0
        [yaindex] => 0
        [gooindex] => 0
        [liveinternet] => 0
        [active] => 1
        [domainend] => 0
        [pr] => 3
        [dmoz] => 1
        [yaindex_up] => 0
        [gooindex_up] => 0
        [sorting_id] => 0
    )
    Вот что в консоли ошибок появилось
      Андрей Копп
      07 августа 2015, 20:24
      0
      Вот сама функция из процессоров sites/update

      public function beforeSet() {
      		$id = (int)$this->getProperty('id');
      		$domain = trim($this->getProperty('domain'));
      		if (empty($id)) {
      			return $this->modx->lexicon('seopanel_sites_err_ns');
      		}
              $this->setProperty('yaca',  $this->getProperty('yaca') == 'true' ? 1 : 0);
              $this->setProperty('dmoz',  $this->getProperty('dmoz') == 'true' ? 1 : 0);
      
      		if (empty($domain)) {
      			$this->modx->error->addField('domain', $this->modx->lexicon('seopanel_sites_err_name'));
      		}
      		elseif ($this->modx->getCount($this->classKey, array('domain' => $domain, 'id:!=' => $id))) {
      			$this->modx->error->addField('domain', $this->modx->lexicon('seopanel_sites_err_ae'));
      		}
      
      		return parent::beforeSet();
      	}
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3