खोज…


बेस टेम्पलेट का उपयोग करना

base.twig.html

<!DOCTYPE html>
<html>
    <head>
        <title>{{ title | default('Hello World') }}</title>
        <link rel="stylesheet" type="text/css" href="theme.css">
        {% block css %}
        {% endblock %}
    </head>
    <body>
    {% block body %}
        <nav>
        {% block navigation %}
            <a href="#">Link</a>
            <a href="#">Link</a>
            <a href="#">Link</a>
        {% endblock navigation %}
        </nav>
        <section id="container">
            <section id="content">
            {% block content %}
            <p>
            Lorem ipsum dolor sit amet.
            </p>
        </section>
        {% endblock content %}
    </section>
    {% endblock body %}
    </body>
</html>

page.twig.html

{% extends base.twig.html %}
{% block navigation %}
<a href="page2.html">Page 2</a>
<a href="page3.html">Page 3</a>
<a href="page4.html">Page 4</a>
{% endblock %}
{% block content %}
This is my first page
{% endblock content %}

किसी सम्मिलित टेम्पलेट की सामग्री बदलें

article.twig.html

<article>
    <h1>{{ article.title }}</h1>
    {% block content %}
    <p>{{ article.content }}</p>
    {% endblock %}
</article>

articles.twig.html

{# use default template for article #}
{% for article in articles %}
    {% include "article.twig.html" %}
{% endfor %}

{# use custom template for article #}
{% for article in articles %}
    {% embed "article.twig.html" %}
        {% block content %}
            <img src="{{ article.image }}" alt="{{ article.title }}" />
            {{ parent() }}
        {% endblock %}
    {% endembed %}
{% endfor %}

परिवर्तनीय वंशानुक्रम

parent.html.twig

<!DOCTYPE html>
<html>
    <head>
        <title>{{ title_variable | default('Normal Page') }}</title>
    </head>
    <body>
         <h1>This is the {{ title_variable }} Page</h1>    
    </body>
</html>

child.html.twig

{% extends "parent.html.twig" %}
{% set title_variable = "Child" %}

शामिल करें, विस्तार, उपयोग, मैक्रो, एंबेड की तुलना करें

ट्विग में विभिन्न प्रकार के वंशानुक्रम और कोड का पुन: उपयोग होता है:

शामिल

मुख्य लक्ष्य कोड का पुन: उपयोग है । उपयोग करने पर विचार header.html.twig और footer.html.twig अंदर base.html.twig एक उदाहरण के रूप।

header.html.twig

<nav>
   <div>Homepage</div>
   <div>About</div>
</nav>

base.html.twig

{% include 'header.html.twig' %}
<main>{% block main %}{% endblock %}</main>

का विस्तार

मुख्य लक्ष्य ऊर्ध्वाधर विरासत है । एक उदाहरण के रूप में homepage.html.twig . about.html.twig और about.html.twig अंदर base.html.twig विस्तार करने पर विचार करें।

base.html.twig

{% include 'header.html.twig' %}
<main>{% block main %}{% endblock %}</main>

homepage.html.twig

{% extends 'base.html.twig' %}

{% block main %}
<p>You are at the homepage</p>
{% endblock %}

about.html.twig

{% extends 'base.html.twig' %}

{% block main %}
<p>You are at the about page</p>
{% endblock %}

उपयोग

मुख्य लक्ष्य क्षैतिज पुन: उपयोग है । उपयोग करने पर विचार sidebar.product.html.twig अंदर single.product.html.twig (फैली product.layout.html.twig ) और single.service.html.twig (फैली 'service.layout.html.page') पृष्ठों की है। (यह मैक्रोज़ की तरह है, लेकिन ब्लॉकों के लिए)

sidebar.html.twig

<aside>{% block sidebar %}{% endblock %}</aside>

single.product.html.twig

{% extends 'product.layout.html.twig' %}

{% use 'sidebar.html.twig' %}
{% block main %}
<p>You are at the product page for product number 123</p>
{% endblock %}

single.service.html.twig

{% extends 'service.layout.html.twig' %}

{% use 'sidebar.html.twig' %}
{% block main %}
<p>You are at the service page for service number 456</p>
{% endblock %}

मैक्रो

मुख्य लक्ष्य चर के साथ कई टेम्पलेट्स में पुन: प्रयोज्य मार्कअप है । एक फ़ंक्शन पर विचार करें जो कुछ चर प्राप्त करता है और कुछ मार्कअप को आउटपुट करता है।

form.html.twig

{% मैक्रो इनपुट (नाम, मान, प्रकार)%} <इनपुट प्रकार = "{प्रकार | डिफ़ॉल्ट ('पाठ')}}" नाम = "{{नाम}}" मूल्य = "{{मूल्य | ई}} "}}" /> {% endmacro%}


profile.service.html.twig

{% import "forms.html.twig" as forms %}

<div>{{ forms.input('username') }}</div>

एम्बेड

मुख्य लक्ष्य ब्लॉक ओवरराइडिंग है । इसमें एक साथ Use & Include दोनों की कार्यक्षमता है। product.table.html.twig और service.table.html.twig में एम्बेडिंग pagination.html.twigproduct.table.html.twig pagination.html.twig विचार करें।

pagination.html.twig

<div>
    <div>{% block first %}{% endblock %}</div>
    {% for i in (min + 1)..(max - 1) %}
        <div>{{ i }}</div>
    {% endfor %}
    <div>{% block last %}{% endblock %}</div>
</div>

product.table.html.twig

{% set min, max = 1, products.itemPerPage %}

{% embed 'pagination.html.twig' %}
    {% block first %}First Product Page{% endblock %}
    {% block last %}Last Product Page{% endblock %}
{% endembed %}

service.table.html.twig

{% set min, max = 1, services.itemPerPage %}

{% embed 'pagination.html.twig' %}
    {% block first %}First Service Page{% endblock %}
    {% block last %}Last Service Page{% endblock %}
{% endembed %}

कृपया ध्यान दें कि एंबेडेड फ़ाइल ( pagination.html.twig . pagination.html.twig । यहाँ पर) वर्तमान संदर्भ ( min , max चर यहाँ) तक पहुँच है। इसके अलावा, आप एम्बेडेड फ़ाइल में अतिरिक्त चर पास कर सकते हैं:

pagination.html.twig

<p>{{ count }} items</p>
<div>
    <div>{% block first %}{% endblock %}</div>
    {% for i in (min + 1)..(max - 1) %}
        <div>{{ i }}</div>
    {% endfor %}
    <div>{% block last %}{% endblock %}</div>
</div>

product.table.html.twig

{% set min, max = 1, products|length %}

{% embed 'pagination.html.twig' with {'count': products|length } %}
    {% block first %}First Product Page{% endblock %}
    {% block last %}Last Product Page{% endblock %}
{% endembed %}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow