什么是 Twig 等价物 isset() 和 !empty()?

2022-08-30 22:21:02

Twig相当于以下PHP三元条件的是什么?

<?php echo (isset($myVar) && !empty($myVar)) ? $myVar : '#button-cart'; ?>

我不光彩地尝试过这个,但它看起来并不好,当然,它不起作用:

{{ myVar is defined and myVar not empty ? myVar : '#button-cart' }}

答案 1

请参阅所有测试的测试。要使用测试,请使用 。您在“空”测试中缺少“是”。感谢@DarkBee指出了这个小错误。variable is test

但是要回答您最初的问题,请查看Twig/Extension/Core.php。该类显示了每个Twig测试如何在“引擎盖下”工作。

下面是一个小表,其中包含所有测试及其PHP等效项:

| Twig test    | PHP method used                                   |
|--------------|---------------------------------------------------|
| constant     | constant                                          |
| defined      | defined                                           |
| divisible by | %                                                 |
| empty        | twig_test_empty                                   |
| even         | % 2 == 0                                          |
| iterable     | $value instanceof Traversable || is_array($value) |
| null         | null ===                                          |
| odd          | % 2 == 1                                          |
| same as      | ===                                               |

twig_test_empty检查:

  • 如果它是数组:或count(array) === 0
  • 如果它是一个对象:或Object::__toString === ''
  • 如果它是其他东西(例如字符串,浮点数或整数):'' === $value || false === $value || null === $value || array() === $value

答案 2

推荐