ฉันควรใช้โครงสร้างใดเพื่อตรวจสอบว่าค่าเป็น 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 definedAND ของคุณเป็นเท่านั้นNULL
{% if var is not null %}