Fenom не выводит плейсхолдеры в снипете ForgotPassword
Здравствуйте,
Подскажите пожалуйста, у меня Fenom не выводит плейсхолдер с ошибкой, при отправке пустой формы. При этом стандартный modx вызов работает нормально и выводит ошибку. Строка проверки находится в forgotPass_tpl
Fenom вызов выглядит так:
Подскажите пожалуйста, у меня 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'),
])}
Комментарии: 7
Login и набор его сниппетов не умеют в Fenom.
Можно попробовать так — Fenom не работает с некоторыми сниппетами?
Можно попробовать так — Fenom не работает с некоторыми сниппетами?
Спасибо, буду знать.
Некоторые сниппеты все таки умеют, например Login или Register, но нужно все проверять т.к. случаются варианты, особенно при отправке сообщений.
Некоторые сниппеты все таки умеют, например Login или Register, но нужно все проверять т.к. случаются варианты, особенно при отправке сообщений.
Ты, наверно, путаешь с инлайн чанками.
pdoTools подключает свой парсер, который легко справляется с феномом в чанках любых сниппетов. По крайней мере, должен с стандартных ситуациях.
pdoTools подключает свой парсер, который легко справляется с феномом в чанках любых сниппетов. По крайней мере, должен с стандартных ситуациях.
Не инлайн, а обычные чанки.
С ForgotPassword ситуация вообще странная. Плейсхолдеры Fenom почему то не обрабатывает, зато лексиконы выводятся нормально.
Заметил еще одну особенность, MODx плейсхолдеры отображаются только без восклицательного знака [[+loginfp.post.email]], с ним ! возвращается пустое значение.
Может здесь собака порылась?
С ForgotPassword ситуация вообще странная. Плейсхолдеры Fenom почему то не обрабатывает, зато лексиконы выводятся нормально.
Заметил еще одну особенность, MODx плейсхолдеры отображаются только без восклицательного знака [[+loginfp.post.email]], с ним ! возвращается пустое значение.
Может здесь собака порылась?
Может здесь собака порылась?Конечно здесь. Память уже подводить стала :(
Метод modX::getChunk() работает только с кэшированными плейсхолдерами. Оно и понятно. Ибо смысла делить их на кэшированные и некэшированные нет в отличие от ресурса или шаблона.
Читатели моего блога знают, что в случае обработки кэшированных плейсхолдеров Fenom не запускается. (Так как я давно уже MODX активно не занимаюсь, начал подзабывать такие тонкости.) Как я уже не однократно говорил, в MODX ни один шаблонизатор не будет работать нормально, так как отличаются концепции парсинга.
Ковырнул контроллер сниппета ForgotPassword и оказалось все прозаичнее. Все данные складывались в массив, а затем вызывался getChunk. По этому никаких плейсхолдеров и не выводилось. Нужно перед возвращением чанка добавить массив в плейсхолдеры.
$this->modx->setPlaceholders($this->placeholders);
Учим матчасть. Самый простой способ — изучать код. Для начала смотрим Chunk::process().
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.