الفرق بين المراجعتين لصفحة: «Twig/use»
أسامه-دمراني (نقاش | مساهمات) 1.0: إضافة عنوان الصفحة. |
أسامه-دمراني (نقاش | مساهمات) إدخال 2.0 تمام المحتوى وانظر أيضًا والتصانيف والمصادر. |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الوسم use في Twig}}</noinclude> | <noinclude>{{DISPLAYTITLE: الوسم use في Twig}}</noinclude><blockquote>إع{{DISPLAYTITLE: الوسم use في Twig}}ادة الاستخدام هي ميزة متقدمة في Twig ولا تحتاج إليها إلا نادرًا في القوالب العادية، وتستخدمها المشاريع التي تريد للقوالب أن يعاد استخدامها دون الحاجة إلى الوراثة.</blockquote>تُ{{DISPLAYTITLE: الوسم use في Twig}}عد وراثة القوالب من أقوى المزايا التي في محرك القوالب Twig، لكنها محدودة بوراثة واحدة، فالقالب لا يمكنه إلا أن يوسع قالبًا آخر فقط، وهذا القيد يجعل وراثة القوالب سهلة الفهم والتنقيح معًا:<syntaxhighlight lang="twig"> | ||
{% extends "base.html" %} | |||
{% block title %}{% endblock %} | |||
{% block content %}{% endblock %} | |||
</syntaxhighlight>وإعادة الاستخدام الأفقية هي طريقة لتحقيق نفس هدف الوراثة المتعددة، لكن من غير التعقيد الذي قد يأتي معها:<syntaxhighlight lang="twig"> | |||
{% extends "base.html" %} | |||
{% use "blocks.html" %} | |||
{% block title %}{% endblock %} | |||
{% block content %}{% endblock %} | |||
</syntaxhighlight>تخبر تعليمة <code>use</code> محرك القوالب Twig أن يستورد الكتل المعرفة في <code>blocks.html</code> إلى القالب الحالي، وقد يكون هذا قريبًا من سلوك الشيفرات الجامعة، لكنه لكتل الشيفرات هنا:<syntaxhighlight lang="twig"> | |||
{# blocks.html #} | |||
{% block sidebar %}{% endblock %} | |||
</syntaxhighlight>تستورد تعليمة <code>use</code> في المثال السابق كتلة <code>sidebar</code> إلى القالب الأساسي، وتكون الشيفرة مكافئة للشيفرة التالية أدناه (لا تُخرَج الكتل المستوردة تلقائيًا):<syntaxhighlight lang="twig"> | |||
{% extends "base.html" %} | |||
{% block sidebar %}{% endblock %} | |||
{% block title %}{% endblock %} | |||
{% block content %}{% endblock %} | |||
</syntaxhighlight>لاحظ أن وسم <code>use</code> يستورد القالب فقط إذا لم يوسع قوالب أخرى ولم يعرِّف شيفرات جامعة (macro) وكان المتن (body) فارغًا، لكنه يستطيع استخدام القوالب الأخرى. كذلك لا يمكن أن يكون مرجع القالب تعبيرًا لأن تعليمات <code>use</code> تٌحل حلًا مستقلًا عن السياق الممرر إلى القالب. | |||
يستطيع القالب الأساسي أن يتخطى أي كتلة مستوردة، فإذا كان القالب قد عرّف كتلة <code>sidebar</code> فيتم تجاهل الكتلة المعرفة في <code>blocks.html</code>، ويمكنك إعادة تسمية الكتل المستوردة لئلا يقع خلط وتعارض بين الأسماء:<syntaxhighlight lang="twig"> | |||
{% extends "base.html" %} | |||
{% use "blocks.html" with sidebar as base_sidebar, title as base_title %} | |||
{% block sidebar %}{% endblock %} | |||
{% block title %}{% endblock %} | |||
{% block content %}{% endblock %} | |||
</syntaxhighlight>تحدد الدالة <code>parent()</code> شجرة الوراثة الصحيحة تلقائيًا كي تُستخدم عند تخطي كتلة معرفة في قالب مستورد:<syntaxhighlight lang="twig"> | |||
{% extends "base.html" %} | |||
{% use "blocks.html" %} | |||
{% block sidebar %} | |||
{{ parent() }} | |||
{% endblock %} | |||
{% block title %}{% endblock %} | |||
{% block content %}{% endblock %} | |||
</syntaxhighlight>في المثال السابق، ستستدعي دالة <code>parent()</code> كتلة <code>sidebar</code> من القالب <code>blocks.html</code>. | |||
تسمح لك إعادة التسمية بمحاكاة الوراثة من خلال استدعاء الكتلة الأب:<syntaxhighlight lang="twig"> | |||
{% extends "base.html" %} | |||
{% use "blocks.html" with sidebar as parent_sidebar %} | |||
{% block sidebar %} | |||
{{ block('parent_sidebar') }} | |||
{% endblock %} | |||
</syntaxhighlight>لاحظ أنه لا حد لعدد تعليمات <code>use</code> التي يمكن استخدامها في أي قالب، وإذا عرّف قالبان مستوردان نفس الكتلة فإن الأخير هو الذي يحوزها. | |||
== انظر أيضًا == | |||
* [[Twig/intro|مقدمة عن محرك القوالب Twig.]] | |||
* [[Twig/advanced|توسيع Twig.]] | |||
== المصادر == | |||
* [https://twig.symfony.com/doc/3.x/tags/use.html صفحة الوسم use من توثيق Twig الرسمي.] | |||
[[تصنيف:Twig]] | |||
[[تصنيف:Twig Tags]] |
مراجعة 05:24، 27 أبريل 2021
إعادة الاستخدام هي ميزة متقدمة في Twig ولا تحتاج إليها إلا نادرًا في القوالب العادية، وتستخدمها المشاريع التي تريد للقوالب أن يعاد استخدامها دون الحاجة إلى الوراثة.
تُعد وراثة القوالب من أقوى المزايا التي في محرك القوالب Twig، لكنها محدودة بوراثة واحدة، فالقالب لا يمكنه إلا أن يوسع قالبًا آخر فقط، وهذا القيد يجعل وراثة القوالب سهلة الفهم والتنقيح معًا:
{% extends "base.html" %}
{% block title %}{% endblock %}
{% block content %}{% endblock %}
وإعادة الاستخدام الأفقية هي طريقة لتحقيق نفس هدف الوراثة المتعددة، لكن من غير التعقيد الذي قد يأتي معها:
{% extends "base.html" %}
{% use "blocks.html" %}
{% block title %}{% endblock %}
{% block content %}{% endblock %}
تخبر تعليمة use
محرك القوالب Twig أن يستورد الكتل المعرفة في blocks.html
إلى القالب الحالي، وقد يكون هذا قريبًا من سلوك الشيفرات الجامعة، لكنه لكتل الشيفرات هنا:
{# blocks.html #}
{% block sidebar %}{% endblock %}
تستورد تعليمة use
في المثال السابق كتلة sidebar
إلى القالب الأساسي، وتكون الشيفرة مكافئة للشيفرة التالية أدناه (لا تُخرَج الكتل المستوردة تلقائيًا):
{% extends "base.html" %}
{% block sidebar %}{% endblock %}
{% block title %}{% endblock %}
{% block content %}{% endblock %}
لاحظ أن وسم use
يستورد القالب فقط إذا لم يوسع قوالب أخرى ولم يعرِّف شيفرات جامعة (macro) وكان المتن (body) فارغًا، لكنه يستطيع استخدام القوالب الأخرى. كذلك لا يمكن أن يكون مرجع القالب تعبيرًا لأن تعليمات use
تٌحل حلًا مستقلًا عن السياق الممرر إلى القالب.
يستطيع القالب الأساسي أن يتخطى أي كتلة مستوردة، فإذا كان القالب قد عرّف كتلة sidebar
فيتم تجاهل الكتلة المعرفة في blocks.html
، ويمكنك إعادة تسمية الكتل المستوردة لئلا يقع خلط وتعارض بين الأسماء:
{% extends "base.html" %}
{% use "blocks.html" with sidebar as base_sidebar, title as base_title %}
{% block sidebar %}{% endblock %}
{% block title %}{% endblock %}
{% block content %}{% endblock %}
تحدد الدالة parent()
شجرة الوراثة الصحيحة تلقائيًا كي تُستخدم عند تخطي كتلة معرفة في قالب مستورد:
{% extends "base.html" %}
{% use "blocks.html" %}
{% block sidebar %}
{{ parent() }}
{% endblock %}
{% block title %}{% endblock %}
{% block content %}{% endblock %}
في المثال السابق، ستستدعي دالة parent()
كتلة sidebar
من القالب blocks.html
.
تسمح لك إعادة التسمية بمحاكاة الوراثة من خلال استدعاء الكتلة الأب:
{% extends "base.html" %}
{% use "blocks.html" with sidebar as parent_sidebar %}
{% block sidebar %}
{{ block('parent_sidebar') }}
{% endblock %}
لاحظ أنه لا حد لعدد تعليمات use
التي يمكن استخدامها في أي قالب، وإذا عرّف قالبان مستوردان نفس الكتلة فإن الأخير هو الذي يحوزها.