Непредсказуемая логика в операции модификатора eq
Здравствуйте!
Почему, когда я залогинен, то сниппет redirect все равно выполняется? Как исправить эту странную логику?
redirect:
Почему, когда я залогинен, то сниппет redirect все равно выполняется? Как исправить эту странную логику?
[[!+modx.user.id:isloggedin:eq=`1`:then=`
. . .
`:else=`
[[!redirect]]
`]]
redirect:
header('HTTP/1.1 301 Moved Permanently');
header('Location: /');
Комментарии: 8
Оно будет срабатывать потому что так устроен MODX. тут или большая вложенность или эффект парсера модикс.
Дело в том что он (парсер) рекурсивный, а значит до того как сработает условие — вычисляет данные внутри всех условий (если я не ошибаюсь в формулировках).
Я обычно сниппеты делаю в таком режиме — режим «наоборот».
те есть в модиксе комментирование кода
Дело в том что он (парсер) рекурсивный, а значит до того как сработает условие — вычисляет данные внутри всех условий (если я не ошибаюсь в формулировках).
Я обычно сниппеты делаю в таком режиме — режим «наоборот».
те есть в модиксе комментирование кода
[[- some code ]]
Поэтому ваше выражение можно переписать так:[[[[!+modx.user.id:isloggedin:eq=`1`:then=`-`:else=``]]!redirect]]
возможно еще с воскл. знаками поиграться придется. Для другого контента который у вас был, будет условие:[[!+modx.user.id:isloggedin:eq=`1`:then=` .... `:else=``]]
Как-то так.
Спасибо, способ хоть и костыльный, но работает. Да, видимо дело в особенностях работы парсера.
Хотя в журнал ошибок теперь сыплются строки:
Could not find snippet with name [[!+modx.user.id:isloggedin:eq=`1`:then=`-`]]redirect
потому что вы сократили мой совет надо еще чтобы было обязательно else
иначе запись не корректна.
иначе запись не корректна.
Еще одна непредсказуемая логика :) Я думал, что по-умолчанию else и так пустой, если его не задавать.
Нет, с else тоже пишет в журнал(
Переходите на fenom тогда. И не будет таких надписей. Или напишите свой снипет с дополнительной логикой проверки.
Спасибо! На Феноме без проблем работает.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.