الفرق بين المراجعتين لصفحة: «Twig/for»
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق |
جميل-بيلوني (نقاش | مساهمات) |
||
سطر 59: | سطر 59: | ||
== الشرط else == | == الشرط else == | ||
إذا لم يحدث تكرار بسبب فراغ التسلسل فيمكن إخراج | إذا لم يحدث تكرار بسبب فراغ التسلسل فيمكن إخراج render كتلة بديلة باستخدام <code>else</code>:<syntaxhighlight lang="twig"> | ||
<ul> | <ul> | ||
{% for user in users %} | {% for user in users %} | ||
سطر 90: | سطر 90: | ||
== التكرار على مجموعة فرعية == | == التكرار على مجموعة فرعية == | ||
إذا أردت التكرار على مجموعة فرعية | إذا أردت التكرار على مجموعة فرعية subset من القيم، فاستخدم المرشح <code>slice</code>:<syntaxhighlight lang="twig"> | ||
<h1>Top Ten Members</h1> | <h1>Top Ten Members</h1> | ||
<ul> | <ul> |
المراجعة الحالية بتاريخ 06:06، 11 مايو 2021
يكرر وسم for
على كل عنصر من عناصر تسلسل ما، فمثلًا إذا أردنا عرض قائمة من المستخدمين الموجودين في متغير اسمه users
:
<h1>Members</h1>
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
لاحظ أن التسلسل قد يكون مصفوفة أو كائنًا يستخدم واجهة Traversable
. وللتكرار على تسلسل من الأعداد فيمكن استخدام العامل ..
:
{% for i in 0..10 %}
* {{ i }}
{% endfor %}
ستطبع الشيفرة أعلاه جميع الأعداد من 0 إلى 10. كذلك قد يكون مفيدًا مع الحروف:
{% for letter in 'a'..'z' %}
* {{ letter }}
{% endfor %}
يأخذ العامل ..
أي تعبير على كلا جانبيه:
{% for letter in 'a'|upper..'z'|upper %}
* {{ letter }}
{% endfor %}
إذا أردت خطوة مختلفة عن 1 فاستخدام دالة range
.
متغير loop
يمكن الوصول إلى بعض المتغيرات الخاصة داخل كتلة التكرار لـ for
:
المتغير | الوصف |
---|---|
loop.index
|
التكرار الحالي للحلقة (1 مفهرس) |
loop.index0
|
التكرار الحالي للحلقة (0 مفهرس) |
loop.revindex
|
عدد التكرارات من نهاية الحلقة (1 مفهرس) |
loop.revindex0
|
عدد التكرارات من نهاية الحلقة (0 مفهرس) |
loop.first
|
تتحقق -أي تكون true - في حالة التكرار الأول
|
loop.last
|
تتحقق -أي تكون true - في حالة التكرار الأخير
|
loop.length
|
عدد العناصر في التسلسل |
loop.parent
|
السياق |
{% for user in users %}
{{ loop.index }} - {{ user.username }}
{% endfor %}
لاحظ أن المتغيرات loop.length
و loop.revindex
و loop.revindex0
و loop.last
متاحة لمصفوفات PHP فقط أو الكائنات التي تستخدم الواجهة Countable
.
الشرط else
إذا لم يحدث تكرار بسبب فراغ التسلسل فيمكن إخراج render كتلة بديلة باستخدام else
:
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% else %}
<li><em>no user found</em></li>
{% endfor %}
</ul>
التكرار على المفاتيح
تكرِّر الحلقة افتراضيًا على قيم التسلسل، ويمكن التكرار على المفاتيح باستخدام المرشح keys
:
<h1>Members</h1>
<ul>
{% for key in users|keys %}
<li>{{ key }}</li>
{% endfor %}
</ul>
التكرار على المفاتيح والقيم
تستطيع الوصول إلى كل من المفاتيح والقيم كما يلي:
<h1>Members</h1>
<ul>
{% for key, user in users %}
<li>{{ key }}: {{ user.username|e }}</li>
{% endfor %}
</ul>
التكرار على مجموعة فرعية
إذا أردت التكرار على مجموعة فرعية subset من القيم، فاستخدم المرشح slice
:
<h1>Top Ten Members</h1>
<ul>
{% for user in users|slice(0, 10) %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>