Прерывание внутри плагина

Добрый день, подскажите. Есть плагин, который выполняется перед сохранение данных пользователя. В случае исключительной (я создают условие сам) ситуации нужно остановить и вернуть текст ошибки. Но вот незадача, почему-то после выполнения кода, дальше моего условия скрипт не идет, а вот выполнение штатного скрипта modx (сохранение пользователя) идет.

Пример кода:

<?php
if ($modx->event->name === 'OnUserFormSave') {
// Пример условия для прерывания
if ($user->get('email') === 'blocked@example.com') {
$modx->event->output('Регистрация с таким email запрещена.');
$modx->event->stopPropagation();
return;
}

// Или выбросить исключение (если обрабатывается в компоненте или сниппете)
// throw new Exception('Регистрация с таким email запрещена.');
}

Или

<?php
if ($modx->event->name === 'OnUserBeforeSave') {
// Пример: запретить создание пользователя с определённым email
$email = $user->get('email');

if ($email === 'blocked@example.com') {
$modx->event->output('Пользователь с таким email не может быть создан.');
$modx->event->_output = 'Пользователь с таким email не может быть создан.';
$modx->event->stopPropagation(); // Остановить выполнение других плагинов
return false; // Очень важно — возврат false остановит сохранение!
}

В чем может быть причина?
}
charset
13 июля 2025, 21:06
modx.pro
249
0

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

charset
14 июля 2025, 00:57
0
Т.е. другими словами в контроллер нужно вернуть

success($message = '', $data = array(), $placeholders = array()){
        $response = array(
            'success' => false,
            'message' => $this->modx->lexicon($message, $placeholders),
            'data' => $data,
        );
    Артур Шевченко
    14 июля 2025, 22:15
    +2
    Причина может быть в том, что сохранение пользователя нельзя прервать.
    Ещё можно попробовать событие OnBeforeUserFormSave
      charset
      16 июля 2025, 17:45
      0
      да, действительно. Вы правы. Через данное событие — заработало. Большое спасибо.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        3