Câu trả lời:
Tùy thuộc vào chính xác những gì bạn cần:
is null
kiể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 sameas
thử 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 defined
sẽ trả về true
nếu một biến được xác định và giá trị của nó là null.
is_ sameas
phả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 empty
và 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 var
chính xác NULL
và 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 var
khô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 default
bộ 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 NULL
hoặ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 %}