我正在尝试在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
填充的内容与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 %}
但是上述方法不起作用。我看不到我在做什么错。 任何帮助,不胜感激。