Как в Fenom настроить модификатор "in"? Работает как-то странно.
Приветствую.
В Fenom есть модификатор in. Написал простое выражение:
Думал, что что-то в сайте не то и создал тестовый. Вот он:

Почему так — не пойму. Может быть, вы объясните в чем тут дело!?
В Fenom есть модификатор in. Написал простое выражение:
{if $_modx->resource.parent | in : [16, 17, 18]}
УСЛОВИЕ ВЫПОЛНЕНО
{else}
УСЛОВИЕ НЕ ВЫПОЛНЕНО
{/if}Суть его сводится к тому, что если родитель ресурса находится в массиве, тогда показываем, что условие выполнено и наоборот. Все логично. Почитал документацию и, вроде, все верно, но почему-то в тех ресурсах где ID родителя нет в указанном массиве, модификатор все равно показывает, что условие выполнено.Думал, что что-то в сайте не то и создал тестовый. Вот он:
http://s24976.h5.modhost.pro/manager/
Логин: s24976
Пароль: MuUTSeQmOBLsВот скриншот ресурсов из админки. На нем отметил ресурсы, в которых условие выполняется (УСЛОВИЕ ВЫПОЛНЕНО), хотя, должно быть не выполнено (УСЛОВИЕ НЕ ВЫПОЛНЕНО). По логике и существующей структуре сообщение «УСЛОВИЕ НЕ ВЫПОЛНЕНО» должно показываться только внутри папки с идентификатором 16 (17, 18).
Почему так — не пойму. Может быть, вы объясните в чем тут дело!?
Комментарии: 7
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
- $a in list $b
- $a in keys $b
- $a in string $b (если указана строка вместо массива)
Соответственно, в твоем случае in list возвращает false, но сразу после этого идет проверка на in keys, которая уже возвращает true. То есть проверяется, что parent текущего ресурса содержится в ключах массива, а это, разумеется, правда.Из сорсов:
Не знаю, зачем был придуман этот модификатор, потому что в реальных кейсах никто не проверяет такой «микс» условий.
Рекомендую забыть об этом модификаторе и юзать его более конкретизированные версии, в частности in list.
Можно как-то то, что вы написали использовать в конструкции условий Fenom? Как тут:
из той же документации на гитхабе