Twig 如何检查OctoberCMS布局模板中是否存在页面属性

Twig 如何检查OctoberCMS布局模板中是否存在页面属性,twig,octobercms,Twig,Octobercms,在布局中,当页面未定义属性时,使用定义的检查页面属性会产生类似“调用未定义的方法十月\Rain\Halcyon\Builder::meta_description()”的错误。 我希望测试为false,而不是抛出异常 我有如下布局检查是否定义了this.page.meta_描述 description = "Default layout" == <!DOCTYPE html> <html> <head> <meta charse

在布局中,当页面未定义属性时,使用定义的
检查页面属性会产生类似“调用未定义的方法十月\Rain\Halcyon\Builder::meta_description()”的错误。
我希望测试为false,而不是抛出异常

我有如下布局检查是否定义了this.page.meta_描述

description = "Default layout"

==
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>{{ this.page.title }}</title>
    {% if this.page.meta_description is defined and this.page.meta_description is not empty %}
          <meta name="description" content="{{ this.page.meta_description }}">
    {% endif %}
    </head>
  <body>
  ...
  </body>
</html>
description=“默认布局”
==
{{this.page.title}
{%如果定义了this.page.meta_描述并且this.page.meta_描述不是空的%}
{%endif%}
...
如果使用此布局的页面定义了
meta\u description
属性,则呈现良好。 但是,如果页面没有定义它,
this.page.meta\u说明被定义
part抛出异常


检查页面属性是否已定义的正确方法是什么?

我刚刚找到了一种通过关联数组语法访问属性来解决这种情况的方法

{% if this.page['meta_description'] is defined and this.page['meta_description'] is not empty %}
  <meta name="description" content="{{ this.page.meta_description }}">
{% endif %}
{%如果定义了此.page['meta_description'],并且此.page['meta_description']不是空的%}
{%endif%}

这与我预期的一样有效,但我不确定这是否是最好的解决方案。

我找到了一个略优于的解决方案

使用
Page.\uu isset()
方法检查是否定义了属性

{% if this.page.__isset('meta_description') and this.page.meta_description is not empty %}
  <meta name="description" content="{{ this.page.meta_description }}">
{% endif %}

是的,它是正确和标准的解决方案,不需要担心。
{% if viewBag is defined and viewBag.__isset('canonical_url') and viewBag.canonical_url is not empty %}