什么是等于isset()和!empty()的Twig?

Car*_*elu 8 php twig

什么是以下PHP三元条件的Twig等价物?

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

我已经光荣地尝试了这个,但它看起来并不好,当然,它不起作用:

{{ myVar is defined and myVar not empty ? myVar : '#button-cart' }}
Run Code Online (Sandbox Code Playgroud)

Ste*_*ant 9

参见测试的所有测试.要使用测试,请使用variable is test.你在'空'测试中缺少'是'.致@DarkBee指出这个小错误.

但是要回答你的初始问题,请看看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      | ===                                               |
Run Code Online (Sandbox Code Playgroud)

twig_test_empty 检查:

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

  • 谢谢您的详细解释.问题确实是`empty`测试中缺少`is`.也归功于@DarkBee. (2认同)