Fenom не выводит плейсхолдеры в снипете ForgotPassword

Здравствуйте,
Подскажите пожалуйста, у меня Fenom не выводит плейсхолдер с ошибкой, при отправке пустой формы. При этом стандартный modx вызов работает нормально и выводит ошибку. Строка проверки находится в forgotPass_tpl
Fenom вызов выглядит так:
{set $errors = $_modx->getPlaceholder('loginfp.errors')}
{if $errors}<div class="alert alert-danger">{$errors}</div>{/if}
MODx вызов:
[[+loginfp.errors:notempty=`<div class="alert alert-danger">[[+loginfp.errors]]</div>`]]
Вызов сниппета:
{$_modx->runSnippet('!ForgotPassword', [
    'resetResourceId' => $_modx->resource.id,
    'loginResourceId' => $_modx->config.login_id,
    'tpl' => 'forgotPass_tpl',
    'sentTpl' => 'forgotPassSent_tpl',
    'emailTpl' => 'forgotPassEmail_tpl',
    'emailSubject' => $_modx->lexicon('login.reset_password'),
])}
Pavel Kravchuk
04 апреля 2020, 16:43
modx.pro
406
0

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

Андрей
04 апреля 2020, 17:22
+1
Login и набор его сниппетов не умеют в Fenom.

Можно попробовать так — Fenom не работает с некоторыми сниппетами?
    Pavel Kravchuk
    04 апреля 2020, 17:36
    0
    Спасибо, буду знать.
    Некоторые сниппеты все таки умеют, например Login или Register, но нужно все проверять т.к. случаются варианты, особенно при отправке сообщений.
      Сергей Шлоков
      05 апреля 2020, 11:27
      +1
      Ты, наверно, путаешь с инлайн чанками.

      pdoTools подключает свой парсер, который легко справляется с феномом в чанках любых сниппетов. По крайней мере, должен с стандартных ситуациях.
        Pavel Kravchuk
        05 апреля 2020, 11:49
        0
        Не инлайн, а обычные чанки.
        С ForgotPassword ситуация вообще странная. Плейсхолдеры Fenom почему то не обрабатывает, зато лексиконы выводятся нормально.
        Заметил еще одну особенность, MODx плейсхолдеры отображаются только без восклицательного знака [[+loginfp.post.email]], с ним ! возвращается пустое значение.
        Может здесь собака порылась?
          Сергей Шлоков
          05 апреля 2020, 15:25
          +1
          Может здесь собака порылась?
          Конечно здесь. Память уже подводить стала :(
          Метод modX::getChunk() работает только с кэшированными плейсхолдерами. Оно и понятно. Ибо смысла делить их на кэшированные и некэшированные нет в отличие от ресурса или шаблона.

          Читатели моего блога знают, что в случае обработки кэшированных плейсхолдеров Fenom не запускается. (Так как я давно уже MODX активно не занимаюсь, начал подзабывать такие тонкости.) Как я уже не однократно говорил, в MODX ни один шаблонизатор не будет работать нормально, так как отличаются концепции парсинга.
      Pavel Kravchuk
      05 апреля 2020, 12:22
      0
      Ковырнул контроллер сниппета ForgotPassword и оказалось все прозаичнее. Все данные складывались в массив, а затем вызывался getChunk. По этому никаких плейсхолдеров и не выводилось. Нужно перед возвращением чанка добавить массив в плейсхолдеры.
      $this->modx->setPlaceholders($this->placeholders);
        Сергей Шлоков
        05 апреля 2020, 15:14
        0
        Учим матчасть. Самый простой способ — изучать код. Для начала смотрим Chunk::process().
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        7