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, НО ТОЛЬКО У ОДНОГО ПОЛЯ. Почему так происходит не пойму. Если у двух полей выбрать «ДА» сразу, то сохраняется нормально, так же если сразу у двух полей «НЕТ» выбрать, но если один сохранён как «ДА» и пробовать второе поле сохранить как «ДА», то у первого поля сохраняется НЕТ, а у второго ДА. Что делать? Глаз уже замылился((( Комментарии: 3
На вскидку вроде правильно. Определять setProperty нужно в beforeSet().
Попробуй в функции beforeSave() выгрузить свойства в журнал и посмотри чего пишется
Попробуй в функции beforeSave() выгрузить свойства в журнал и посмотри чего пишется
public function beforeSave() {
$this->modx->log(modX::LOG_LEVEL_ERROR, print_r($this->getProperties(),1));
return true;
}
[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
)
Вот что в консоли ошибок появилось
Вот сама функция из процессоров 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();
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.