Проверка ветки на неопределенное во внешнем интерфейсе - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь создать виджет открытого / закрытого магазина в 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 %}

Однако выше не будет работать.Я не вижу, что я делаю не так.Любая помощь с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...