Я пытаюсь создать виджет открытого / закрытого магазина в Twig.Это должно быть сделано во внешнем интерфейсе, так как у меня нет доступа к созданию бэкэнд-функций (платформа SaaS)
У меня работает почти все, кроме одного.Когда вы вводите значение, которое не равно одному из операторов, сервер выдает 500 internal error
.Что бы я ни пытался, я просто не вижу, как проверить, установлен ли этот конкретный var.
Чтобы уточнить:
Я могу установить следующие параметры:
theme.monday
theme.tuesday
theme.wednesday
etc...
Давайтескажем, я заполняю theme.monday
значением 09.00-16.00
.Это означает, что магазин открыт с 9 до 16 часов.Это работает с кодом ниже.Когда я заполняю theme.monday
значением CLosED
, код ниже также работает.
Однако, когда я заполняю theme.monday
значением Hello! blabla
, сервер выдает внутреннюю ошибку.
С моим ограниченным знанием веток я понимаю, что эта ошибка происходит от var combine
.Если в качестве значения установлено что-то еще, то эта функция разделения не будет работать вне поля зрения.
Мой вопрос: как с этим справиться?Так, как я могу сделать какую-то проверку, которая будет работать, когда theme.monday
заполнен чем-то отличным от closed
или 09.00-16.00
?
{% set open = false %}
{% set now = 'now' | date('U') %}
{% set today = 'now' | date('l') | lower %}
{% set closedval = attribute(theme, today) | lower | t %}
{% if 'closed' in closedval %}
{% set open = false %}
{% else %}
{% set combine = attribute(theme, today) | split('-') %}
{% set opening_time = combine[0] | date('U') %}
{% set closing_time = combine[1] | date('U') %}
{% if (now < closing_time) and (now > opening_time) %}
{% set open = true %}
{% endif %}
{% endif %}
То, что я пробовал, это:
{% set open = false %}
{% set now = 'now' | date('U') %}
{% set today = 'now' | date('l') | lower %}
{% set closedval = attribute(theme, today) | lower | t %}
{% set combine = attribute(theme, today) | split('-') %}
{% if 'closed' in closedval %}
{% set open = false %}
{% elseif combine is not null %}
{# or
{% elseif combine is defined %}
{% elseif combine is not sameas(false) %}
#}
{% set opening_time = combine[0] | date('U') %}
{% set closing_time = combine[1] | date('U') %}
{% if (now < closing_time) and (now > opening_time) %}
{% set open = true %}
{% endif %}
{% else %}
{% set open = false %}
{% endif %}
Однако выше не будет работать.Я не вижу, что я делаю не так.Любая помощь с благодарностью.