Câu trả lời:
Tùy thuộc vào chính xác những gì bạn cần:
is nullkiểm tra xem giá trị là null:
{% if var is null %}
{# do something #}
{% endif %}is defined kiểm tra xem biến được định nghĩa:
{% if var is not defined %}
{# do something #}
{% endif %}Ngoài ra, is sameasthử nghiệm, loại so sánh nghiêm ngặt của hai giá trị, có thể được quan tâm để kiểm tra các giá trị khác null(như false):
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()hàm PHP , is definedsẽ trả về truenếu một biến được xác định và giá trị của nó là null.
is_ sameasphải {% if var is same as(false) %}không {% if var is sameas(false) %}thấy url url => twig.symfony.com/doc/2.x/tests/sameas.html
Cách đặt giá trị mặc định trong twig: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
Hoặc nếu bạn không muốn nó hiển thị khi null:
{{ my_var | default("") }}
undefined or emptyvà null?
Không có bất kỳ giả định nào, câu trả lời là:
{% if var is null %}
Nhưng điều này sẽ chỉ đúng nếu varchính xác NULLvà không có giá trị nào khác được ước tính false(chẳng hạn như 0, chuỗi rỗng và mảng trống). Bên cạnh đó, nó sẽ gây ra lỗi nếu varkhông được xác định. Một cách an toàn hơn sẽ là:
{% if var is not defined or var is null %}
có thể rút ngắn thành:
{% if var|default is null %}
Nếu bạn không cung cấp đối số cho defaultbộ lọc, nó sẽ giả sử NULL(loại mặc định mặc định). Vì vậy, cách ngắn nhất và an toàn nhất (tôi biết) để kiểm tra xem một biến có trống không (null, false, chuỗi / mảng trống, v.v.):
{% if var|default is empty %}
Tôi không nghĩ bạn có thể. Điều này là do nếu một biến không được xác định (không được đặt) trong mẫu twig, thì nó trông giống NULLhoặc none(theo thuật ngữ twig). Tôi khá chắc chắn rằng điều này là để ngăn chặn các lỗi truy cập xấu xảy ra trong mẫu.
Do thiếu "danh tính" trong Twig ( ===), đây là điều tốt nhất bạn có thể làm
{% if var == null %}
stuff in here
{% endif %}
Dịch ra:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
Mà nếu tốt tại của bạn kiểu tung hứng , phương tiện mà những thứ như 0, '', FALSE,NULL , và một var không xác định cũng sẽ làm cho tuyên bố rằng sự thật.
Đề nghị của tôi là yêu cầu danh tính được triển khai thành Twig.
{if var is none}và tương đương với PHP là gì?
{% if abcxyz is none %}trở thành if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; } if ((null === $_abcxyz_)) { echo "hi"; }. Vì vậy, về cơ bản nếu giá trị không xác định hoặc null, nó sẽ đúng.
{% if var is empty %} twig.sensiolabs.org/doc/tests/empty.html mà dịch để PHP if (empty($var))mà đánh giá lại chống lại một giá trị falsey ( !isset, null, 0, array(), "", false, "0", 0.0) php.net/manual/en/function.empty.php Bạn có thể cũng sử dụng {% if var is same as(var) %}cho danh tính ( ===). twig.sensiolabs.org/doc/tests/sameas.html
//test if varibale exist
{% if var is defined %}
//todo
{% endif %}
//test if variable is not null
{% if var is not null %}
//todo
{% endif %}
if var is not null.
{% if var is not null %}