php 在Twig中,检查数组的特定键是否存在

koaltpgm  于 2023-04-04  发布在  PHP
关注(0)|答案(4)|浏览(95)

在PHP中,我们可以使用函数array_key_exists()检查数组中是否存在键。
在Twig模板语言中,我们可以简单地使用if语句来检查变量或对象的属性是否存在,如下所示:

{% if app.user %}
do something here
{% else %}
do something else
{% endif %}

但是我们如何使用Twig检查 * 数组 * 的键是否存在?我尝试了{% if array.key %},但它给了我一个错误:

Key "key" for array with keys "0, 1, 2, 3...648" does not exist

由于将数据传递到模板的主要方法之一是使用数组,因此似乎应该有一些方法可以做到这一点。有什么想法吗?

stszievb

stszievb1#

小枝示例:

{% if array.key is defined %}
  // do something
{% else %}
  // do something else
{% endif %}
ldfqzlk8

ldfqzlk82#

您可以使用keys wig函数
{% if myVar in someOtherArray|keys %}

at0kjp5o

at0kjp5o3#

快速应答(TL;DR)

  • DeveloperTLindel想要测试Twig中是否存在数组键。
  • DeveloperTLindel希望捕获与undefined键相关的任何错误。
  • 这可以使用default过滤器来处理。

详细答案

上下文

  • Twig 2.x(最新版本截至2017-03-08周三)
  • default过滤器的通用用途。

问题

*方案:

  • DeveloperTLindel想要测试Twig中是否存在数组键。
  • DeveloperTLindel希望避免由潜在未定义的键引起的任何错误或异常。

溶液

  • DeveloperTLindel可以使用default过滤器。
  • default过滤器捕获由于未定义的变量引起的任何异常,并允许短路替换替代值。
  • default过滤器可链接。

Example01

{#- ****************************************
  testing for a single key in associative array
  -#} 
  {%- set mystring = myarray['key-no-existo'] |default('__BLANK__')  -%}

{#- ****************************************
  testing for a multiple keys in associative array
  -#} 
  {%- set mystring = myarray['alpha']
        |default(myarray['bravo'])
        |default(myarray['charlie'])
        |default('__BLANK__')
        -%}

另请参见

6rqinv9w

6rqinv9w4#

SYMFONY 6
解决方案很简单TWIG正在查找在Controller中调用$this->render时传递的变量。
1.创建包数据,如

$options = [
                 'companyLogo' => $company->getCompanyLogoLink(),
                 'companyName' => $company->getCompanyShortname(),
                 'menuItem'    => $companyMenuCategories,

         ];

1.传给TWIG
return $this-〉render('folder/template.html. twig',[ 'o' =〉$options,]);
1.在twig中只需要查找“passed”键(o)和数组数据

{% if o.companyName is defined %}
     {{ o.companyName }}
   {% endif %}

相关问题