Twig에서 null을 확인하는 방법은 무엇입니까?


답변:


516

정확히 필요한 것에 따라 :

  • 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 %}

71
그리고 무언가가 null이 아닌지 확인하려면 간단히하세요{% if var is not null %}
J.-BC

4
것을 빠른 참고 : $ VAR == 널 (null)이 $ VAR에 true를 돌려줍니다은 0이지만, $ VAR는 널 (null)가 false를 돌려 것이다
daSn0wie

또한 $ var이 null 인 경우 $ var == 0은 true를 반환합니다.
Petter Soderlund

또한 PHP isset()함수 와 달리 변수가 정의되어 있고 값이 null이면 is defined반환 true합니다.
Pavel Petrov

1
주의 : 같은 변수 나뭇 2.x를 검사 값과 같은 같이 is_ sameas해야 {% if var is same as(false) %}하지 {% if var is sameas(false) %}참조 문서의 URL => twig.symfony.com/doc/2.x/tests/sameas.html
아메드 hamdy

127

나뭇 가지에 기본값을 설정하는 방법 : http://twig.sensiolabs.org/doc/filters/default.html

{{ my_var | default("my_var doesn't exist") }}

또는 null 일 때 표시하지 않으려는 경우 :

{{ my_var | default("") }}

1
그래서 구별 않습니다 undefined or emptynull?
푹신한

6
이것이 올바른 확인 방법 인 것 같습니다 ... 많은 공감대가 없습니다.
mr-sk

1
정확히 내가 찾던 것. 당신이 있는지 확인했다 | 기본값으로 다음과 같이 다른 변수를 기본값으로 시도 할 수 있습니다. {{my_var | default (my_var2)}} 방금 테스트했지만 다음과 같이 체인을 계속 연결할 수도 있습니다. {{my_var | default (my_var2) | default ( "my_var 및 my_var2는 존재하지 않습니다")}}
CTS_AE

34

어떤 가정도없이 대답은 다음과 같습니다.

{% if var is null %}

그러나 이것은 var정확히 NULL이고 평가하는 다른 값 false(예 : 0, 빈 문자열 및 빈 배열)이 아닌 경우에만 해당됩니다 . 또한 var정의되지 않은 경우 오류가 발생합니다 . 더 안전한 방법은 다음과 같습니다.

{% if var is not defined or var is null %}

단축 할 수 있습니다 :

{% if var|default is null %}

default필터에 인수를 제공하지 않으면 NULL(기본 기본값 정렬)로 가정합니다 . 따라서 변수가 비어 있는지 확인하는 가장 짧고 안전한 방법 (내가 아는 것) (널, 거짓, 빈 문자열 / 배열 등) :

{% if var|default is empty %}

7

나는 당신이 할 수 있다고 생각하지 않습니다. 잔 가지 템플릿에서 변수가 정의되지 않은 경우 (설정되지 않은 경우) NULL또는 none잔 가지로 나타납니다. 템플릿에서 잘못된 액세스 오류가 발생하는 것을 억제하는 것입니다.

나뭇 가지에 "정체성"이 없기 때문에 ( ===) 이것이 최선입니다

{% if var == null %}
    stuff in here
{% endif %}

다음과 같이 해석됩니다.

if ((isset($context['somethingnull']) ? $context['somethingnull'] : null) == null)
{
  echo "stuff in here";
}

어떤 경우에 당신의 좋은 타입 저글링 , 수단과 같은 일들이 0, '', FALSE,NULL , 그리고 정의되지 않은 VAR는 그 진술이 사실 만들 것입니다.

제 제안은 아이덴티티가 Twig에 구현되도록 요구하는 것입니다.


2
Kendall은 구현을 제안하는 것이 옳습니다 .Twig의 github 이슈 트래커에서 구현할 것을 요구하는 좋은 경험은 없었습니다. 그들은 매우 친절하고 전문적입니다.
Shabbyrobe

@ kendall-hopkins 궁금한 점이 있습니다. 언제 사용하는 것이 적절한 지 {if var is none}, PHP는 무엇입니까?
noisebleed

@noisebleed {% if abcxyz is none %}가됩니다 if (isset($context["abcxyz"])) { $_abcxyz_ = $context["abcxyz"]; } else { $_abcxyz_ = null; } if ((null === $_abcxyz_)) { echo "hi"; }. 따라서 기본적으로 값이 정의되어 있지 않거나 null이면 true입니다.
Kendall Hopkins

1
@noisebleed refnone 의 별칭이기도 합니다. null
Kendall Hopkins

이 답변에 해당하는도를 사용하는 것입니다 {% 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/en/function.empty.php 당신을 수 있습니다 {% if var is same as(var) %}신원 에도 사용 됩니다 ( ===). twig.sensiolabs.org/doc/tests/sameas.html
fyrye

5
     //test if varibale exist
     {% if var is defined %}
         //todo
     {% endif %}

     //test if variable is not null
     {% if var is not null %}
         //todo
     {% endif %}

이 답변이 현재 승인 된 답변보다 낫다고 생각하는 이유는 무엇입니까?
STT LCU

StackOverflow에 오신 것을 환영합니다! 이미 수락 된 답변과의 차이점은 무엇입니까? 구식입니까? 기존 답변보다 답변이 더 나은 이유는 무엇입니까?
Artemix

@STTLCU 그는 포함하고 if var is not null있습니다.
crmpicco

4

한 줄을 사용하여 그렇게 할 수도 있습니다.

{{ yourVariable is not defined ? "Not Assigned" : "Assigned" }}

3

다음 코드를 사용하여 여부를 확인할 수 있습니다

{% if var is defined %}

var is variable is SET

{% endif %}

0

또한 변수가 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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.