الفرق بين المراجعتين لصفحة: «Twig/for»

من موسوعة حسوب
إدخال 2.0 تمام المحتوى وانظر أيضًا والتصانيف والمصادر.
ط مراجعة وتدقيق
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الوسم for في Twig}}</noinclude>
<noinclude>{{DISPLAYTITLE:الوسم for في Twig}}</noinclude>
يك{{DISPLAYTITLE:الوسم for في Twig}}رر وسم for على كل عنصر من عناصر تسلسل ما، فمثلًا إذا أردنا عرض قائمة من المستخدمين الموجودين في متغير اسمه <code>users</code>:<syntaxhighlight lang="twig">
يكرر وسم <code>for</code> على كل عنصر من عناصر تسلسل ما، فمثلًا إذا أردنا عرض قائمة من المستخدمين الموجودين في متغير اسمه <code>users</code>:
{{DISPLAYTITLE:الوسم for في Twig}}<syntaxhighlight lang="twig">
<h1>Members</h1>
<h1>Members</h1>
<ul>
<ul>
سطر 7: سطر 8:
     {% endfor %}
     {% endfor %}
</ul>
</ul>
</syntaxhighlight>لاحظ أن التسلسل قد يكون مصفوفة أو كائنًا يستخدم واجهة <code>Traversable</code>. وللتكرار على تسلسل من الأعداد فيمكن استخدام العامل <code>..</code> :<syntaxhighlight lang="twig">
</syntaxhighlight>لاحظ أن التسلسل قد يكون مصفوفة أو كائنًا يستخدم واجهة <code>Traversable</code>. وللتكرار على تسلسل من الأعداد فيمكن استخدام العامل <code>..</code>:<syntaxhighlight lang="twig">
{% for i in 0..10 %}
{% for i in 0..10 %}
     * {{ i }}
     * {{ i }}
سطر 40: سطر 41:
|-
|-
|<code>loop.first</code>
|<code>loop.first</code>
|تتحقق -أي تكون true- في حالة التكرار الأول
|تتحقق -أي تكون <code>true</code>- في حالة التكرار الأول
|-
|-
|<code>loop.last</code>
|<code>loop.last</code>
|تتحقق -أي تكون true- في حالة التكرار الأخير
|تتحقق -أي تكون <code>true</code>- في حالة التكرار الأخير
|-
|-
|<code>loop.length</code>
|<code>loop.length</code>
سطر 55: سطر 56:
     {{ loop.index }} - {{ user.username }}
     {{ loop.index }} - {{ user.username }}
{% endfor %}
{% endfor %}
</syntaxhighlight>لاحظ أن المتغيرات  <code>loop.length</code> و  <code>loop.revindex</code> و  <code>loop.revindex0</code> و <code>loop.last</code> متاحة لمصفوفات PHP فقط أو الكائنات التي تستخدم الواجهة <code>Countable</code>.
</syntaxhighlight>لاحظ أن المتغيرات  <code>loop.length</code> و  <code>loop.revindex</code> و  <code>loop.revindex0</code> و <code>loop.last</code> متاحة لمصفوفات [[PHP]] فقط أو الكائنات التي تستخدم الواجهة <code>Countable</code>.


== الشرط else ==
== الشرط else ==
سطر 69: سطر 70:


== التكرار على المفاتيح ==
== التكرار على المفاتيح ==
تكرِّر الحلقة افتراضيًا على قيم التسلسل، ويمكن التكرار على المفاتيح باستخدام الفلتر <code>keys</code>:<syntaxhighlight lang="twig">
تكرِّر الحلقة افتراضيًا على قيم التسلسل، ويمكن التكرار على المفاتيح باستخدام المرشح <code>keys</code>:<syntaxhighlight lang="twig">
<h1>Members</h1>
<h1>Members</h1>
<ul>
<ul>
سطر 89: سطر 90:


== التكرار على مجموعة فرعية ==
== التكرار على مجموعة فرعية ==
إذا أردت التكرار على مجموعة فرعية (subset) من القيم، فاستخدم الفلتر <code>slice</code>:<syntaxhighlight lang="twig">
إذا أردت التكرار على مجموعة فرعية (subset) من القيم، فاستخدم المرشح <code>slice</code>:<syntaxhighlight lang="twig">
<h1>Top Ten Members</h1>
<h1>Top Ten Members</h1>
<ul>
<ul>
سطر 99: سطر 100:


== انظر أيضًا ==
== انظر أيضًا ==
[[Twig/intro|مقدمة عن محرك القوالب Twig.]]


[[Twig/tags|الوسوم في Twig.]]
* [[Twig/intro|مقدمة عن محرك القوالب Twig]]
* [[Twig/tags|الوسوم في Twig]]


== المصادر ==
== المصادر ==


* [https://twig.symfony.com/doc/3.x/tags/for.html صفحة الوسم for من توثيق Twig الرسمي.]
* [https://twig.symfony.com/doc/3.x/tags/for.html صفحة الوسم for من توثيق Twig الرسمي]


[[تصنيف:Twig]]
[[تصنيف:Twig]]
[[تصنيف:Twig Tags]]
[[تصنيف:Twig Tags]]

مراجعة 15:56، 5 مايو 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>

انظر أيضًا

المصادر