Не работают модификаторы применяемые к Ошибкам
Приветствую бойцы!
Нужна помощь!
Есть сниппет:
Если выводить вот так:
Но, если выводить с применением модификатора вот так:
Прошу помощи или разъяснения! Заранее спасибо!
Нужна помощь!
Есть сниппет:
[[!ChangePassword?
&submitVar=`change-password`
&placeholderPrefix=`cp.`
&validateOldPassword=`1`
&successMessage=`Ваш пароль успешно изменен!`
&reloadOnSuccess=`1`
&redirectToLogin=`0`
&validate=`nospam:blank`
]]
и вывод плейсхолдера ошибки:[[!+cp.error_message]]
Теперь странность!Если выводить вот так:
[[!+cp.error_message]]
— все работает, ошибки выводятся!Но, если выводить с применением модификатора вот так:
[[!+cp.error_message:notempty=`[[!+cp.error_message]]`]]
— То почему ошибка не выводится! Почему хочется так? Чтобы обернуть ошибку в красивую оболочку, что то вроде:[[!+cp.error_message:notempty=`<div class="errore">[[!+cp.error_message]]`]]</div>
Ну ясное дело только труднее коснтрукция!Прошу помощи или разъяснения! Заранее спасибо!
Комментарии: 4
Так и думал, но все же, раньше работало, почему перестало не пойму.
Оказывается Модификатор почему то не работал именно из-за того, что вывод ошибки с модификатором стояла перед вызовом сниппета, а не после.
Но раньше работало и так, но вот опять таки вопрос, почему вызво без модификатора до вызова сниппета работает, а с модификатором отказывается?
Оказывается Модификатор почему то не работал именно из-за того, что вывод ошибки с модификатором стояла перед вызовом сниппета, а не после.
Но раньше работало и так, но вот опять таки вопрос, почему вызво без модификатора до вызова сниппета работает, а с модификатором отказывается?
потому что модификатор это тоже в некотором роде сниппет, и он пытается отработать до того, как отработает сниппет, возвращающий ошибку. То есть в этот момент еще никто ничего не вернул, и модификатор обрабатывает пустое место. Это и раньше работать не могло, если только Вы ошибки без восклицательного знака вызывали.
Это и раньше работать не могло, если только Вы ошибки без восклицательного знака вызывали.Могло и может. Всё очень просто. Парсер по умолчанию гоняет 10 циклов. Если за 9 циклов он не обработает какой-нибудь плейсхолдер, то на 10-й раз он его удалит.
В данном случае, парсер в первом проходе проверяет плейсхолдер [[!+cp.error_message]]. Он пустой, поэтому остается не обработанным. Далее обрабатывается тег сниппета. Он (сниппет) выставляет этот плейсхолдер. Во втором цикле парсер проверяет оставшиеся плейсхолдеры и на этот раз распарсивает этот плейсхолдер.
А когда используется фильтр notempty, то плейсхолдер обрабатывается сразу же. Т.е. парсер на первом цикле вернет или пустое значение или указанное в фильтре. На втором круге парсить уже нечего.
Как-то так.
рмишщзлхз
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.