ฉันควรใช้โครงสร้างใดเพื่อตรวจสอบว่าค่าเป็น NULL ในแม่แบบ Twig หรือไม่
ฉันควรใช้โครงสร้างใดเพื่อตรวจสอบว่าค่าเป็น NULL ในแม่แบบ Twig หรือไม่
คำตอบ:
ขึ้นอยู่กับสิ่งที่คุณต้องการ:
is null
ตรวจสอบว่าเป็นค่าnull
:
{% if var is null %}
{# do something #}
{% endif %}
is defined
ตรวจสอบว่ามีการกำหนดตัวแปร:
{% if var is not defined %}
{# do something #}
{% endif %}
นอกจากนี้การis sameas
ทดสอบซึ่งทำการเปรียบเทียบแบบสองค่าอย่างเข้มงวดอาจเป็นที่สนใจสำหรับการตรวจสอบค่าอื่นที่ไม่ใช่null
(เช่นfalse
):
{% if var is sameas(false) %}
{# do something %}
{% endif %}
isset()
ฟังก์ชั่นPHP is defined
จะกลับมาtrue
ถ้ามีการกำหนดตัวแปรและค่าเป็นโมฆะ
is_ sameas
ต้อง{% if var is same as(false) %}
ไม่{% if var is sameas(false) %}
เห็น Doc url => twig.symfony.com/doc/2.x/tests/sameas.html
วิธีตั้งค่าเริ่มต้นเป็น twig: http://twig.sensiolabs.org/doc/filters/default.html
{{ my_var | default("my_var doesn't exist") }}
หรือถ้าคุณไม่ต้องการให้มันแสดงเมื่อ null:
{{ my_var | default("") }}
undefined or empty
และnull
?
ไม่มีสมมติฐานใด ๆ คำตอบคือ:
{% if var is null %}
แต่สิ่งนี้จะเป็นจริงเฉพาะในกรณีที่var
เป็นจริงเท่านั้นNULL
และไม่ใช่ค่าอื่นใดที่ประเมินเป็นfalse
(เช่นศูนย์สตริงว่างและอาร์เรย์ว่าง) นอกจากนี้จะทำให้เกิดข้อผิดพลาดหากvar
ไม่ได้กำหนดไว้ วิธีที่ปลอดภัยกว่าคือ:
{% if var is not defined or var is null %}
ซึ่งสามารถย่อให้เป็น:
{% if var|default is null %}
หากคุณไม่ได้ระบุอาร์กิวเมนต์ให้กับdefault
ตัวกรองมันจะถือว่าNULL
(เรียงลำดับเริ่มต้นเป็นค่าเริ่มต้น) ดังนั้นวิธีที่สั้นและปลอดภัยที่สุด (ฉันรู้) เพื่อตรวจสอบว่าตัวแปรว่างเปล่า (null, false, สตริงว่าง / อาร์เรย์ ฯลฯ ):
{% if var|default is empty %}
ฉันไม่คิดว่าคุณจะทำได้ นี่เป็นเพราะหากตัวแปรไม่ได้กำหนดไว้ (ไม่ได้ตั้งค่า) ในเทมเพลตทวิกดูเหมือนว่าNULL
หรือnone
(ในเทอมทวิก) ฉันค่อนข้างแน่ใจว่านี่คือการระงับข้อผิดพลาดการเข้าถึงที่ไม่ดีเกิดขึ้นในแม่แบบ
เนื่องจากการขาด "ตัวตน" ใน Twig ( ===
) นี่เป็นวิธีที่ดีที่สุดที่คุณสามารถทำได้
{% if var == null %}
stuff in here
{% endif %}
ซึ่งแปลเป็น:
if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
echo "stuff in here";
}
ซึ่งถ้าดีของคุณที่คุณประเภทเล่นกลหมายความว่าสิ่งต่างๆเช่น0
, ''
, FALSE
, NULL
และ var ไม่ได้กำหนดก็จะทำให้คำสั่งที่แท้จริง
คำแนะนำของฉันคือการขอข้อมูลประจำตัวที่จะนำไปใช้กับทวิก
{if var is none}
และอะไรที่เทียบเท่ากับ PHP
{% if abcxyz is none %}
if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; }
if ((null === $_abcxyz_)) { echo "hi"; }
ดังนั้นโดยทั่วไปหากค่าไม่ได้กำหนดหรือเป็นโมฆะมันจะเป็นจริง
{% if var is empty %}
twig.sensiolabs.org/doc/tests/empty.htmlซึ่งแปลเป็น PHP if (empty($var))
ที่ประเมินค่า falsey ( !isset, null, 0, array(), "", false, "0", 0.0
) php.net/manual/th/function.empty.phpคุณสามารถ ยังใช้{% if var is same as(var) %}
เพื่อระบุตัวตน ( ===
) 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
เขารวมทั้ง
คุณยังสามารถใช้หนึ่งบรรทัดเพื่อทำสิ่งนี้:
{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}
คุณสามารถใช้รหัสต่อไปนี้เพื่อตรวจสอบว่า
{% if var is defined %}
var is variable is SET
{% endif %}
นอกจากนี้หากตัวแปรของคุณคือARRAYก็มีตัวเลือกน้อยเช่นกัน:
{% if arrayVariable[0] is defined %}
#if variable is not null#
{% endif %}
หรือ
{% if arrayVariable|length > 0 %}
#if variable is not null#
{% endif %}
สิ่งนี้จะใช้งานได้ถ้าอาร์เรย์is defined
AND ของคุณเป็นเท่านั้นNULL
{% if var is not null %}