Проблема в том, что вы все не по фэншую делает. modPHPMailer не является наследником класса modProcessor, а потому его нельзя использовать как основу для процессора. Правильней вашим процессором расширить modProcessor и в методе process() получить сервис почты. $mailer = $this->modx->getService('mail.modPhpMailer'); P.S. И не пишите никогда такого: dirname(dirname(dirname(dirname(dirname(dirname(dirname(FILE))))))).'/model/modx/mail/modphpmailer.class.php'; Правильней MODX_CORE_PATH.'model/modx/mail/modphpmailer.class.php'; А в предложенном мной варианте этого вообще не нужно.

Но это не решит твоей проблемы с лейзи. Проверяй мапу. Ссылку я дал.

О, а точно, спасибо, переделаю через связанные объекты. Посмотрим, что будет))

Илья, привет. Чаще всего такое происходит, когда в мап-файле не для всех колонок есть описания. Смотри ветку здесь. На счет твоего сохранения двух объектов: как я понимаю, это на самом деле повторное сохранение одного и того же объекта, просто в первом случае он создается новый, а во втором он дергается из базы. В целом твой процессор логически не правильный. Исключение — это только если ты допускаешь, что созданный $secondOp может оставаться сохраненным в базе данных, даже если первичный объект не удалось сохранить. Надо же понимать, что в beforeSet() create-процессора $this->object еще не сохранен, и у него нет ID-шника. При попытке выполнения этого процессора у тебя еще в beforeSet() сохраняется вторичный объект, хотя в итоге этот метод может вернуть ошибку (а если не он, то еще есть beforeSave(), который так же может вернуть ошибку), и первичный объект не сохранится, а вторичный объект уже будет в БД. Все-таки гораздо правильней в подобных случаях через связанные объекты делать. То есть задай связи этим двум классам и в beforeSet() пропиши типа $this->object->secondOp = $this->modx->newObject('Operation'); И при сохранении первичного объекта у тебя автоматически и вторичный сохранится. Конечно и здесь есть логические ошибки в xPDO, ибо при сохранении первичного объекта сначала сохраняются вторичные объекты, и только потом первичный (а потом и опять вторичные), но здесь уже вероятность ошибок будет гораздо меньше. Плюс к этому ты на любом этапе до сохранения первичного объекта можешь устанавливать любые значения вторичному объекту, и он будет сохранен только при попытке сохранить первичный объект. Если до первичного объекта дело не дойдет, то и вторичный не будет записан в БД.

спасибо круто

  1. return rsort($array) — вернет TRUE;
  2. модификатор в smarty можно добавить положив в core/components/modxsmarty/smarty_plugins файлик: modifier.arsort.php <?php function smarty_modifier_arsort($array) { arsort($array); return $array; } 3) получаем такое: {$a=["d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"]} {var_dump($a)} //array(4) { ["d"]=> string(5) "lemon" ["a"]=> string(6) "orange" ["b"]=> string(6) "banana" ["c"]=> string(5) "apple" } {var_dump($a|arsort)} //array(4) { ["a"]=> string(6) "orange" ["d"]=> string(5) "lemon" ["b"]=> string(6) "banana" ["c"]=> string(5) "apple" } кактотак…

а что в логе modx?

спасибо за подсказку упустил я этот момент. но, проблема не в работе сортировки а в том как ее прикрутить правильно

rsort с ассоциативным массивом не работает, пробуйте arsort

Спасибо и еще моментик такой. При отправке обратной связи получаю в письме на почту табличку fullname email phone message captcha feedback_submit manager_mail_subject Как настроить внешний вид обратного письма и в частности, Переименовать на русски и убрать часть лишних колонок к примеру captcha feedback_submit manager_mail_subject