Изменение значения поля после сохранения Товара.
Приветствую сообщество!
Предыстория. На фронте есть форма которая добавляет и сохраняет новые Товары, вот собственно мне нужно, чтобы только у модераторов была возможность ставить галочку нужного мне поля, а если Товар сохраняет кто либо, но НЕ модератор, то сбрасывать поле на 0.
В общем такой вопрос, нужно при сохранении документа сбрасывать (устанавливать) значение одного поля на дефолтное (допустим было 1, надо при сохранении на 0).
Собственно я создал плагин вот такой:
Вот вопросик, куда копать, как сделать так, чтобы это работало :D
UPD.РЕШЕНИЕ
Не знаю на сколько правильно, НО вот такое решение помогло, спасибо @Евгений Webinmd
Предыстория. На фронте есть форма которая добавляет и сохраняет новые Товары, вот собственно мне нужно, чтобы только у модераторов была возможность ставить галочку нужного мне поля, а если Товар сохраняет кто либо, но НЕ модератор, то сбрасывать поле на 0.
В общем такой вопрос, нужно при сохранении документа сбрасывать (устанавливать) значение одного поля на дефолтное (допустим было 1, надо при сохранении на 0).
Собственно я создал плагин вот такой:
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormSave':
$resource->set('moder_pub', 0);
break;
}
Да да, тут нет проверки на то, принадлежит ли пользователь группе модераторы или нет, но суть не в этом, я это сделал, только чтобы проверить работает это вообще или нет, ну собственно не работает… При этом не меняет вообще никакое поле, какое бы не ставил.Вот вопросик, куда копать, как сделать так, чтобы это работало :D
UPD.РЕШЕНИЕ
Не знаю на сколько правильно, НО вот такое решение помогло, спасибо @Евгений Webinmd
<?php
if ($modx->event->name == "OnDocFormSave") {
if ($modx->user->isMember('Moderator')) return;
$id = $resource->get('id');
$res = $modx->getObject('msProduct', $id);
$res->set('moder_pub', 0);
$res->save();
}
Комментарии: 2
если это не ТВ поле, то у меня вот такой плагин срабатывал
if ( $modx->event->name != "OnDocFormSave" || $resource->get('class_key') != 'msProduct' ) return;
$id = $resource->get('id');
$res = $modx->getObject('msProduct', $id); // Получаем объект товара
$res->set('field_name', 'Test');
$res->save();
Для ТВ поля вместо res используется resource без повторного получения объекта. Ну и галочку у плагина на событие не забываем
дай Боже вам крепкого здоровья! Шоб мана небесная на вас лилась без остановки, как напиток из черноголовки! Все получилось, логика работает как мне надо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.