टहनी: यदि कई स्थितियों के साथ


120

ऐसा लगता है कि मैं एक टहनी के साथ समस्या है अगर बयान।

{%if fields | length > 0 || trans_fields | length > 0 -%}

त्रुटि है:

Unexpected token "punctuation" of value "|" ("name" expected) in 

मुझे समझ नहीं आ रहा है कि यह काम क्यों नहीं करता है, यह ऐसा है जैसे टहनी सभी पाइपों के साथ खो गई थी।

मैंने यह कोशिश की है:

{% set count1 = fields | length %}
{% set count2 = trans_fields | length %}
{%if count1 > 0 || count2 > 0 -%}

लेकिन अगर असफल भी हो जाते हैं।

फिर यह कोशिश की:

{% set count1 = fields | length > 0 %}
{% set count2 = trans_fields | length > 0 %}
{%if count1 || count2 -%}

और यह अभी भी काम नहीं करता है, हर बार एक ही त्रुटि ...

इसलिए ... जो मुझे एक बहुत ही सरल प्रश्न की ओर ले जाता है: क्या ट्विग कई स्थितियों का समर्थन करता है यदि?

जवाबों:


287

अगर मुझे ठीक से याद है कि ट्विग समर्थन ||और &&परिचालकों का समर्थन नहीं करता है , लेकिन आवश्यकता होती है orऔर andक्रमशः उपयोग किया जाना चाहिए। मैं दो कथनों को अधिक स्पष्ट रूप से निरूपित करने के लिए कोष्ठक का उपयोग करूँगा, हालाँकि यह तकनीकी रूप से आवश्यकता नहीं है।

{%if ( fields | length > 0 ) or ( trans_fields | length > 0 ) %}

भाव

Expressions can be used in {% blocks %} and ${ expressions }.

Operator    Description
==          Does the left expression equal the right expression?
+           Convert both arguments into a number and add them.
-           Convert both arguments into a number and substract them.
*           Convert both arguments into a number and multiply them.
/           Convert both arguments into a number and divide them.
%           Convert both arguments into a number and calculate the rest of the integer division.
~           Convert both arguments into a string and concatenate them.
or          True if the left or the right expression is true.
and         True if the left and the right expression is true.
not         Negate the expression.

अधिक जटिल कार्यों के लिए, भ्रम से बचने के लिए कोष्ठकों में व्यक्तिगत अभिव्यक्तियों को लपेटना सबसे अच्छा हो सकता है:

{% if (foo and bar) or (fizz and (foo + bar == 3)) %}

13
और निश्चित रूप से आईएफ प्रलेखन को देखने पर मुझे उस अद्भुत और समय की बचत तालिका को खोजने का कोई मौका नहीं मिला: twig.sensiolabs.org/doc/tags/if.html समाधान के लिए धन्यवाद!
FMaz008

5
वे अपने कोड को अधिक अच्छी तरह से प्रलेखित करने के लिए गीथूब पर विकी का उपयोग करते हैं। वह तालिका यहाँ
बेन स्विनबर्न

का उपयोग करना! = मेरे लिए काम नहीं किया (एक बग हो सकता है?): {% If (की! = 'String1' या या (की! = 'String2') या (key! = 'String3')%} इसलिए मुझे उन सभी के लिए (key == 'stringN') का उपयोग करना था और जो कुछ मुझे चाहिए था उसे 'और' कथन में डाल दिया
timhc22

notअभिव्यक्ति को नकारने के लिए आपको ऑपरेटर का उपयोग करने की आवश्यकता है ।
बेन स्विनबर्न

1
आप टर्नरी ऑपरेटर को भूल गए?
जॉन स्मिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.