Короткий ответ

Валидация, permissions, response format, transactions, CSRF, журналирование и повторное использование. Разбираем практический порядок работ, риски, стоимость и то, как принять результат без новых проблем.

Ниже — конкретные проверки, команды, таблицы и контроль результата. Выполняйте изменения только после резервной копии, если действие затрагивает рабочую систему.

Processor — граница доверия

Даже если поле скрыто в Manager, пользователь может отправить запрос вручную. Processor обязан проверять permission, входные данные и право на конкретный объект.

Каркас processor с проверками

PHP
class MyExtraUpdateProcessor extends modObjectUpdateProcessor {
    public $classKey = 'MyExtraItem';
    public $objectType = 'myextra_item';

    public function beforeSet() {
        if (!$this->modx->hasPermission('myextra_save')) {
            return 'access_denied';
        }

        $name = trim((string)$this->getProperty('name'));
        if ($name === '') {
            $this->addFieldError('name', 'required');
        }

        return parent::beforeSet();
    }
}

return 'MyExtraUpdateProcessor';

Processor должен отвечать за

ЗадачаГде
ACL/permissionserver-side
Валидацияprocessor
Работа с xPDO objectprocessor/model
JSON responseprocessor
UI validationдополнительно в JS, но не вместо server-side

Как проверить результат

После изменений повторите исходный сценарий, зафиксируйте результат и убедитесь, что соседние функции работают так же, как до правки. Если проблема проявляется не всегда, проведите несколько повторов в одинаковых условиях и сохраните диагностические данные.

Связанные материалы