【问题标题】:How can I determine if key is an object (twig)?如何确定 key 是否是对象(树枝)?
【发布时间】:2018-12-07 18:46:34
【问题描述】:

我想确定我的键是否是一个对象:

  {% for key in columns %}
      {% if key is object %}
        This is an object
      {% else %}
       This in not an object
      {% endif %}
  {% endfor %}

但我收到错误消息:

未知的“对象”测试。

【问题讨论】:

  • columns 的值是多少?你有更详细的错误信息吗?
  • Twig 没有内置的 is_object 函数/过滤器。也许是您可能想要重新考虑您的设计的线索。否则,是时候学习如何构建自己的twig extension。这是一项有用的技能。
  • @gogaz 未捕获的 PHP 异常 Twig_Error_Syntax:“未知的“对象”测试。”
  • 我试过 {% if key == "[object Object]" %} 但这没有成功
  • @Cerad 我会试试的

标签: symfony object twig


【解决方案1】:

您可以创建自己的自己的 Twig 扩展程序。我看到你已经用 Symfony 标记了你的问题,所以假设你在 Symfony 中使用 Twig,你可以按照本教程进行操作:

https://symfony.com/doc/3.4/templating/twig_extension.html

你需要做的是基于这个例子添加新的TwigTest

https://twig.symfony.com/doc/2.x/advanced.html#tests

你应该得到这样的结果:

// src/AppBundle/Twig/AppExtension.php
namespace AppBundle\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigTest;

class AppExtension extends AbstractExtension
{
    public function getTests()
    {
        return array(
            new TwigTest('object', array($this, 'isObject')),
        );
    }

    public function isObject($object)
    {
        return is_object($object);
    }
}

上面的代码未经测试,但应该可以正常工作。

【讨论】:

    【解决方案2】:

    检查变量是对象还是字符串的简单方法:

    {% if var.id|default('') is not same as ('') %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-13
      • 2013-02-08
      • 2020-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      相关资源
      最近更新 更多