Как в плагине понять, открывается на редактирование или создается ресурс?
Для категорий и товаров minishop2 нужно назначать разные шаблоны, в зависимости от родителя.
Создаю плагин на событие OnBeforeDocFormSave
И в этот момент в журнал ошибок modx падает ошибка, что мол нельзя сохранять товар без цены.
Хотя внешне все срабатывает как нужно. Проблему можно решить назначая вместе с шаблоном в плагине и цену, но этот ведь плагин будет срабатывать и при открытии существующего ресурса, а значит переписывать цену существующего товара.
Логика подсказывает, что должен быть способ определять создаем ли мы новый ресурс или открываем на редактирование старый. Подходящего по названию системного события не нашел тут docs.modx.com/revolution/2.x/developing-in-modx/basic-development/plugins/system-events/
Создаю плагин на событие OnBeforeDocFormSave
if ($grannyId==3 and $resource->get('class_key')=='msProduct'){
$resource->set('template', 5);
return true;
}
И все бы работало хорошо, но этот плагин назначает шаблон и сохраняет (насколько я понимаю ресурс).И в этот момент в журнал ошибок modx падает ошибка, что мол нельзя сохранять товар без цены.
Error HY000 executing statement:
INSERT INTO `modx_ms2_products` (`id`, `article`, `price`, `old_price`, `weight`, `vendor`, `made_in`, `new`, `popular`, `favorite`, `source`) VALUES (199, '', '', '', '', 0, '', 0, 0, 0, 2)
Array
(
[0] => HY000
[1] => 1366
[2] => Incorrect decimal value: '' for column 'price' at row 1
)
Хотя внешне все срабатывает как нужно. Проблему можно решить назначая вместе с шаблоном в плагине и цену, но этот ведь плагин будет срабатывать и при открытии существующего ресурса, а значит переписывать цену существующего товара.
Логика подсказывает, что должен быть способ определять создаем ли мы новый ресурс или открываем на редактирование старый. Подходящего по названию системного события не нашел тут docs.modx.com/revolution/2.x/developing-in-modx/basic-development/plugins/system-events/
Комментарии: 4
В плагине доступна переменная $mode — new или upd
о как. Спасибо. Я правильно понял, нужно сравнивать со строкой? if $mode=='upd'?
Да, типа того. Можно сравнивать со значением константы. Так, наверное, правильнее — if ($mode == modSystemEvent::MODE_UPD)
Спасибо
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.