2011-12-05 34 views
95

Dường như tôi có vấn đề với câu lệnh if.cành cây: NẾU có nhiều điều kiện

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

Lỗi này là:

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

Tôi không thể hiểu tại sao điều này không hoạt động, nó giống như nếu cành lá đã mất với tất cả các đường ống.

Tôi đã thử điều này:

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

nhưng nếu cũng thất bại.

Sau đó cố gắng này:

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

Và nó vẫn không hoạt động, cùng báo lỗi mỗi khi ...

... Vì vậy, dẫn tôi đến một câu hỏi thực sự đơn giản: không hỗ trợ Twig nhiều điều kiện NẾU?

Trả lời

229

Nếu tôi nhớ chính xác, Twig không hỗ trợ các toán tử ||&&, nhưng yêu cầu sử dụng tương ứng orand. Tôi cũng sử dụng dấu ngoặc đơn để biểu thị hai câu lệnh rõ ràng hơn mặc dù đây không phải là yêu cầu về mặt kỹ thuật.

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

Expressions

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. 

Đối với các hoạt động phức tạp hơn, nó có thể là tốt nhất để quấn biểu cá nhân trong ngoặc để tránh nhầm lẫn:

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

Và tất nhiên tôi đã không có cơ hội thấy rằng bảng tuyệt vời và tiết kiệm thời gian khi xem tài liệu IF: http://twig.sensiolabs.org/doc/tags/if.html Cảm ơn bạn đã giải quyết! – FMaz008

+5

Họ có xu hướng sử dụng wiki trên github để tài liệu kỹ lưỡng hơn về mã của họ. Bảng đó xuất phát từ [ở đây] (https://github.com/vito/chyrp/wiki/Twig-Reference) –

+14

Các nhà khai thác cũng phân biệt chữ hoa chữ thường. HOẶC không hoạt động. – Acyra

Các vấn đề liên quan