पर्चा थीम
की कैसे एक रूप प्रदान की गई है हर भाग में
{% form_theme form 'MyBundle:Form:fields.html.twig' %}
यह गहराई से समझाया गया है अनुकूलित किया जा सकता । आप यह बदलने के लिए स्वतंत्र हैं कि प्रत्येक फ़ॉर्म "पंक्ति" कैसे प्रस्तुत करता है, त्रुटियों को प्रस्तुत करने के लिए उपयोग किए गए मार्कअप को बदलें, या यह भी अनुकूलित करें कि टेक्स्टरेरा टैग कैसे प्रस्तुत किया जाना चाहिए। कुछ भी सीमाएं नहीं हैं, और विभिन्न स्थानों पर विभिन्न अनुकूलन का उपयोग किया जा सकता है।
सिम्फनी टेम्पलेट्स का उपयोग फॉर्म के प्रत्येक भाग को प्रस्तुत करने के लिए करता है, जैसे कि लेबल टैग, इनपुट टैग, त्रुटि संदेश और बाकी सब कुछ।
टवीग में, प्रत्येक रूप "खंड" को एक ट्विग ब्लॉक द्वारा दर्शाया जाता है।फ़ॉर्म कैसे प्रस्तुत करता है के किसी भी हिस्से को कस्टमाइज़ करने के लिए, आपको केवल उचित ब्लॉक को ओवरराइड करने की आवश्यकता है।
PHP में, प्रत्येक रूप "खंड" को एक व्यक्तिगत टेम्पलेट फ़ाइल के माध्यम से प्रस्तुत किया जाता है। एक फ़ॉर्म प्रस्तुत करने के किसी भी हिस्से को कस्टमाइज़ करने के लिए, आपको केवल एक नया निर्माण करके मौजूदा टेम्पलेट को ओवरराइड करने की आवश्यकता है।
यह समझने के लिए कि यह कैसे काम करता है, form_row खंड को कस्टमाइज़ करें और प्रत्येक पंक्ति से घिरे div तत्व में कक्षा विशेषता जोड़ें।
{# src/Acme/TaskBundle/Resources/views/Form/fields.html.twig #}
{% block form_row %}
{% spaceless %}
<div class="form_row">
{{ form_label(form) }}
{{ form_errors(form) }}
{{ form_widget(form) }}
</div>
{% endspaceless %}
{% endblock form_row %}
form_row प्रपत्र टुकड़ा जब form_row समारोह के माध्यम से सबसे क्षेत्रों प्रतिपादन प्रयोग किया जाता है ऐसा करने के लिए, एक नया टेम्पलेट फ़ाइल है कि नए मार्कअप स्टोर करेगा पैदा करते हैं। अपने नए form_row टुकड़ा ऊपर परिभाषित उपयोग करने के लिए प्रपत्र घटक कहता हूं, जोड़ने के उस रूप renders टेम्पलेट के शीर्ष पर निम्नलिखित:
{# src/Acme/TaskBundle/Resources/views/Default/new.html.twig #}
{% form_theme form 'AcmeTaskBundle:Form:fields.html.twig' %}
{% form_theme form 'AcmeTaskBundle:Form:fields.html.twig'
'AcmeTaskBundle:Form:fields2.html.twig' %}
{{ form(form) }}
form_theme टैग (टहनी में) "आयात" टुकड़े में परिभाषित किया गया टेम्पलेट दिया गया है और फॉर्म को प्रस्तुत करते समय उनका उपयोग करता है। दूसरे शब्दों में, जब form_row फ़ंक्शन को बाद में इस टेम्पलेट में कॉल किया जाता है, तो यह आपके कस्टम थीम से form_row ब्लॉक का उपयोग करेगा (डिफ़ॉल्ट फॉर्म_रो ब्लॉक के बजाय सिम्फनी के साथ जहाजों)।
आपकी कस्टम थीम को सभी ब्लॉक को ओवरराइड करने की आवश्यकता नहीं है। एक ब्लॉक को प्रतिपादित करते समय जो आपकी कस्टम थीम में ओवरराइड नहीं होता है, थीमिंग इंजन वैश्विक थीम पर वापस आ जाएगा (बंडल स्तर पर परिभाषित)।
यदि कई कस्टम थीम प्रदान की जाती हैं तो उन्हें वैश्विक विषय पर वापस आने से पहले सूचीबद्ध क्रम में खोजा जाएगा।
किसी फ़ॉर्म के किसी भी हिस्से को कस्टमाइज़ करने के लिए, आपको उचित टुकड़े को ओवरराइड करने की आवश्यकता है। यह जानने के लिए कि कौन सा ब्लॉक या फ़ाइल ओवरराइड है, अगले खंड का विषय है।
{# src/Acme/TaskBundle/Resources/views/Default/new.html.twig #}
{% form_theme form with 'AcmeTaskBundle:Form:fields.html.twig' %}
{% form_theme form with ['AcmeTaskBundle:Form:fields.html.twig',
'AcmeTaskBundle:Form:fields2.html.twig'] %}
अधिक जानकारी के लिए देख Symfony रसोई की किताब में प्रतिपादन अनुकूलित करने के लिए कैसे
वैश्विक पर्चा थीम
उपरोक्त उदाहरण में, आप form_theme इस्तेमाल किया सहायक (टवीग में) कस्टम फॉर्म टुकड़ों को "आयात" करने के लिए बस वें में फॉर्म पर आप सिम्फनी को अपनी संपूर्ण परियोजना में फॉर्म अनुकूलन आयात करने के लिए भी बता सकते हैं।
# app/config/config.yml
twig:
form:
resources:
- 'AcmeTaskBundle:Form:fields.html.twig'
क्षेत्रों के अंदर किसी भी ब्लॉक:
टहनी
स्वचालित रूप से सभी टेम्पलेट में पहले बनाए fields.html.twig टेम्पलेट से अनुकूलित ब्लॉक, आपके आवेदन विन्यास फाइल को संशोधित शामिल करने के लिए। html.twig टेम्पलेट अब फॉर्म आउटपुट को परिभाषित करने के लिए वैश्विक रूप से उपयोग किया जाता है।
धन्यवाद, यह भी ठीक है। मैंने पूरी तरह से इस हिस्से को कुकबुक में नहीं देखा। :) लेकिन मुझे अभी भी खेतों में हर तत्व के लिए पंक्तियां बनाना है। लेकिन शायद यह है, यह कैसे होना है। – insertusernamehere
@insertusername यहां मेरे उत्तर में फ़ील्ड केवल अनुकूलन जोड़ा गया। परीक्षण नहीं किया गया लेकिन यह काम करना चाहिए। –
यह बहुत अच्छा काम करता है। एक बार फिर धन्यवाद। :) – insertusernamehere