Не срабатывают события minishop2 при создании нового обработчика на событие
Пытаюсь создать обработчик события msOnCreateOrder через плагин, в «Системные события» плагина отмечаю нужное событие, но при нажатии кнопки «Заказать», будто не вызывается событие вообще, ничего не происходит. Если же убрать галочку в «Системные события» плагина и нажать «заказать» — всё оформляется и заказ проходит. Как повесить обработчик свой на события заказа?
Комментарии: 10
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Также не лишним будет открыть консоль браузера и посмотреть, не появляется ли в ней ошибка при нажатии на кнопку «заказать».
if (empty($_REQUEST['action']) && empty($_REQUEST['ms2_action'])) {
die('Access denied');
}
из файла .../minishop2/action.php
Почему ругается?
Приложите содержимое вашего плагина msOnCreateOrder. Если он выдает ошибку даже при пустом содержимом, стоит подумать о переустановке дополнения minishop2 и/или обновлении версии MODX-a
<?php
$alias = $resource->get('alias');
$parent = $resource->get('parent');
if ($parent == 93) {
$resource->set('alias', 'testtt');
$resource->save();
}
Галочку на событие msOnCreateOrder ставлю, но при клике на кнопку перестает оформляться заказ. Т.е. не срабатывает даже стандартное событие
(к слову, в редакторе сообщений есть тег code, который красиво оформляет синтаксис кода)
Если не секрет, какой объект resource вы получаете? И не легче ли получить его внутри плагина стандартными способами, как-то так:
if (!empty($toPlaceholder)) {
$modx->setPlaceholder($toPlaceholder, $output);
} else {
$addr = $order->getOne('Address')->toArray();
$phone = $addr['phone'];
$address = "$addr[country], $addr[region], $addr[city], $addr[street], $addr[building], $addr[room]";
$modx->runSnippet('CRMka', array('products' => $products, 'phone' => $phone, 'address' => $address));
return $output;
}
По поводу msGetOrder — честно говоря, без понятия. Насколько я вижу, сниппет msGetOrder, из коробки вызывается только при отправлении письма менеджеру или пользователю.
Что же до вашего участка кода… Не совсем улавливаю, для чего вы изменяете коробочный сниппет для вашей задачи. Скорее всего, её можно решить изящнее, например с помощью того же fenom-a.
$addr = $msOrder->getOne('Address')->toArray();
$phone = $addr['phone'];
$address = "$addr[country], $addr[region], $addr[city], $addr[street], $addr[building], $addr[room]";