树枝检查前端是否未定义

时间:2019-02-04 13:56:23

标签: php twig

我正在尝试在Twig中创建一家开/关商店小部件。这必须在前端完成,因为我无权创建后端功能(SaaS平台)

除一件事外,我几乎所有工作正常。当您填写不等于以下语句之一的值时,服务器将引发500 internal error。无论我尝试什么,我都看不到如何检查该特殊变量是否已设置。

要澄清:

我可以设置以下选项:

theme.monday
theme.tuesday
theme.wednesday
etc...

假设我用值theme.monday填充了09.00-16.00。这意味着商店从上午9点至下午4点营业。这适用于以下代码。 当我用值theme.monday填充CLosED时,下面的代码也可以工作。

但是,当我用值theme.monday填充Hello! blabla时,服务器将引发内部错误。

凭借有限的Twig知识,我知道此错误来自var combine。如果将其他内容设置为值,则该拆分功能将无法正常运行。

我的问题是如何处理?因此,当theme.monday填充的内容与closed09.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 %}

但是上述方法不起作用。我看不到我在做什么错。 任何帮助,不胜感激。

0 个答案:

没有答案