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

من موسوعة حسوب
1.0: إضافة عنوان الصفحة.
 
طلا ملخص تعديل
 
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الوسم include في Twig}}</noinclude>
<noinclude>{{DISPLAYTITLE: الوسم include في Twig}}</noinclude>
تتضمن تعليمة <code>include</code> قالبًا وتخرِج المحتوى المصيَّر rendered لذلك الملف:
{{DISPLAYTITLE: الوسم include في Twig}}<syntaxhighlight lang="twig">
{% include 'header.html' %}
    Body
{% include 'footer.html' %}
</syntaxhighlight>لاحظ أنه يُنصح باستخدام دالة <code>include</code> بما أنها توفر نفس المزايا مع مرونة أكبر، وذلك لما يلي:
* دالة <code>include</code> هي أصح دلاليًا، إذ أن تضمين قالب يخرج محتوياته المصيَّرة في النطاق الحالي، أما الوسم فيجب ألا يعرض شيئًا.
* دالة <code>include</code> أكثر قابلية للتركيب composable:
<syntaxhighlight lang="twig">
{# خزن قالبًا مصيَّرًا في متغير #}
{% set content %}
    {% include 'template.html' %}
{% endset %}
{# vs #}
{% set content = include('template.html') %}
{# طبق الفلتر على قالبٍ مصيَّر #}
{% apply upper %}
    {% include 'template.html' %}
{% endapply %}
{# vs #}
{{ include('template.html')|upper }}
</syntaxhighlight>
* لا تقترح دالة <code>include</code> أي ترتيب للوسائط وذلك بسبب الوسائط المسماة named arguments.
تستطيع القوالب المضمنّة أن تصل إلى متغيرات السياق النشط، وإذا كنت تستخدم محمِّل نظام الملفات فإن القوالب التي يُبحث عنها في المسارات التي يعرّفها، كذلك تستطيع إضافة متغيرات إضافية من خلال تمريرها بعد كلمة <code>with</code> المفتاحية:<syntaxhighlight lang="twig">
{# وصول إلى المتغيرات التي في السياق الحالي template.html سيكون لملف
والسياقات الإضافية المتوفرة #}
{% include 'template.html' with {'foo': 'bar'} %}
{% set vars = {'foo': 'bar'} %}
{% include 'template.html' with vars %}
</syntaxhighlight>كلمة <code>only</code> المفتاحية تعطل الوصول إلى السياق:<syntaxhighlight lang="twig">
{# foo لن يوصَل إلا إلى المتغير #}
{% include 'template.html' with {'foo': 'bar'} only %}
{# لا يمكن الوصول إلى أي متغير #}
{% include 'template.html' only %}
</syntaxhighlight>يجب أن تضع القالب المنشأ بواسطة مستخدم آخر داخل صندوق اختبار أولًا قبل إدراجه، انظر صفحة [[Twig/api|Twig للمطورين]] في هذا، وتوثيق وسم [[Twig/sandbox|sandbox]].
اسم القالب يمكن أن يكون أي تعبير Twig صالح:<syntaxhighlight lang="twig">
{% include some_var %}
{% include ajax ? 'ajax.html' : 'not_ajax.html' %}
</syntaxhighlight>إذا كان التعبير يقيَّم إلى ‎<code>\Twig\Template</code> أو إلى نسخة من ‎<code>\Twig\TemplateWrapper</code> فإن Twig سيستخدمه مباشرة:<syntaxhighlight lang="twig">
// {% include template %}
$template = $twig->load('some_template.twig');
$twig->display('template.twig', ['template' => $template]);
</syntaxhighlight>يمكن تمييز الإدراج باستخدام  <code>ignore missing</code> التي تجعل Twig يهمل التعليمة إذ كان القالب الذي سيدرَج غير موجود، ويجب أن توضع بعد اسم القالب، انظر:<syntaxhighlight lang="twig">
{% include 'sidebar.html' ignore missing %}
{% include 'sidebar.html' ignore missing with {'foo': 'bar'} %}
{% include 'sidebar.html' ignore missing only %}
</syntaxhighlight>كما يمكن توفير قائمة من القوالب التي يُتحقق من تواجدها قبل الإدراج، ويُدرَج أول قالب موجود:<syntaxhighlight lang="twig">
{% include ['page_detailed.html', 'page.html'] %}
</syntaxhighlight>إذا أضفنا <code>ignore missing</code> إلى تعليمة <code>include</code> فلن يصيّر شيئًا إذا لم يكن ثمة قوالب موجودة ولن تعرض شيئًا، أما إذا لم نضفه فسيُرفع اعتراض عند عدم وجود قالب.
== انظر أيضًا ==
* [[Twig/intro|مقدمة عن محرك القوالب Twig]]
* [[Twig/api|Twig للمطورين]]
== المصادر ==
* [https://twig.symfony.com/doc/3.x/tags/include.html صفحة الوسم include في توثيق Twig الرسمي]
[[تصنيف:Twig]]
[[تصنيف:Twig Tags]]

المراجعة الحالية بتاريخ 06:07، 11 مايو 2021

تتضمن تعليمة include قالبًا وتخرِج المحتوى المصيَّر rendered لذلك الملف:

{% include 'header.html' %}
    Body
{% include 'footer.html' %}

لاحظ أنه يُنصح باستخدام دالة include بما أنها توفر نفس المزايا مع مرونة أكبر، وذلك لما يلي:

  • دالة include هي أصح دلاليًا، إذ أن تضمين قالب يخرج محتوياته المصيَّرة في النطاق الحالي، أما الوسم فيجب ألا يعرض شيئًا.
  • دالة include أكثر قابلية للتركيب composable:
{# خزن قالبًا مصيَّرًا في متغير #}
{% set content %}
    {% include 'template.html' %}
{% endset %}
{# vs #}
{% set content = include('template.html') %}

{# طبق الفلتر على قالبٍ مصيَّر #}
{% apply upper %}
    {% include 'template.html' %}
{% endapply %}
{# vs #}
{{ include('template.html')|upper }}
  • لا تقترح دالة include أي ترتيب للوسائط وذلك بسبب الوسائط المسماة named arguments.

تستطيع القوالب المضمنّة أن تصل إلى متغيرات السياق النشط، وإذا كنت تستخدم محمِّل نظام الملفات فإن القوالب التي يُبحث عنها في المسارات التي يعرّفها، كذلك تستطيع إضافة متغيرات إضافية من خلال تمريرها بعد كلمة with المفتاحية:

{# وصول إلى المتغيرات التي في السياق الحالي template.html سيكون لملف
 والسياقات الإضافية المتوفرة #}
{% include 'template.html' with {'foo': 'bar'} %}

{% set vars = {'foo': 'bar'} %}
{% include 'template.html' with vars %}

كلمة only المفتاحية تعطل الوصول إلى السياق:

{# foo لن يوصَل إلا إلى المتغير #}
{% include 'template.html' with {'foo': 'bar'} only %}
{# لا يمكن الوصول إلى أي متغير #}
{% include 'template.html' only %}

يجب أن تضع القالب المنشأ بواسطة مستخدم آخر داخل صندوق اختبار أولًا قبل إدراجه، انظر صفحة Twig للمطورين في هذا، وتوثيق وسم sandbox. اسم القالب يمكن أن يكون أي تعبير Twig صالح:

{% include some_var %}
{% include ajax ? 'ajax.html' : 'not_ajax.html' %}

إذا كان التعبير يقيَّم إلى ‎\Twig\Template أو إلى نسخة من ‎\Twig\TemplateWrapper فإن Twig سيستخدمه مباشرة:

// {% include template %}

$template = $twig->load('some_template.twig');

$twig->display('template.twig', ['template' => $template]);

يمكن تمييز الإدراج باستخدام ignore missing التي تجعل Twig يهمل التعليمة إذ كان القالب الذي سيدرَج غير موجود، ويجب أن توضع بعد اسم القالب، انظر:

{% include 'sidebar.html' ignore missing %}
{% include 'sidebar.html' ignore missing with {'foo': 'bar'} %}
{% include 'sidebar.html' ignore missing only %}

كما يمكن توفير قائمة من القوالب التي يُتحقق من تواجدها قبل الإدراج، ويُدرَج أول قالب موجود:

{% include ['page_detailed.html', 'page.html'] %}

إذا أضفنا ignore missing إلى تعليمة include فلن يصيّر شيئًا إذا لم يكن ثمة قوالب موجودة ولن تعرض شيئًا، أما إذا لم نضفه فسيُرفع اعتراض عند عدم وجود قالب.

انظر أيضًا

المصادر