मैं सिम्फनी 2 में एक परियोजना पर काम कर रहा हूं और मेरे पास HTML के कई छोटे टुकड़े हैं जिन्हें मेरे मुख्य विचारों में से एक में शामिल करने की आवश्यकता है। आधिकारिक ट्विग प्रलेखन के अनुसार मुझे बस {% include 'filename.html' %}
का उपयोग करने में सक्षम होना चाहिए, लेकिन सिम्फनी में जब तक कि फ़ाइल नाम ".html.twig" में समाप्त नहीं हो जाता है, यह फेंकता है और त्रुटि कहता है कि यह फ़ाइल नहीं ढूंढ सकता है। मैं इन फ़ाइलों के लिए ट्विग टेम्पलेट्स का उपयोग करने से बचना चाहता हूं क्योंकि उनके पास कोई गतिशील सामग्री नहीं है और बहुत से डबल ब्रेसेस (वे जावास्क्रिप्ट टेम्पलेट्स हैं) और टेम्पलेट डिज़ाइनर को इन फ़ाइलों में से प्रत्येक को {% raw %}
टैग में लपेटना होगा। वास्तव में इसे करने के लिए Kludgey तरीका।मैं सिम्फनी 2/ट्विग टेम्पलेट्स में कच्ची HTML फ़ाइलों को कैसे शामिल करूं?
उत्तर
टहनी फ़ाइल एक्सटेंशन पर एक त्वरित पुनर्कथन (प्रलेखन से लिया गया):
प्रत्येक टेम्पलेट नाम भी दो एक्सटेंशन है कि उस टेम्पलेट के लिए प्रारूप और इंजन को निर्दिष्ट किया है।
AcmeBlogBundle:Blog:index.html.twig - HTML format, Twig engine
AcmeBlogBundle:Blog:index.html.php - HTML format, PHP engine
AcmeBlogBundle:Blog:index.css.twig - CSS format, Twig engine
डिफ़ॉल्ट रूप से, किसी भी Symfony2 टेम्पलेट या तो टहनी या PHP, और विस्तार के अंतिम भाग में लिखा जा सकता है (उदाहरण के लिए .twig या .php) निर्दिष्ट जो इन दो इंजनों में से इस्तेमाल किया जाना चाहिए । एक्सटेंशन का पहला भाग, (उदा। एचटीएमएल,। सीएसएस, आदि) अंतिम प्रारूप है जो टेम्पलेट उत्पन्न करेगा।
इसलिए यह मुझे समझ में आता है कि .html के रूप में फ़ाइल सहित कम से कम संदिग्ध होगा, भले ही यह कोई त्रुटि न डाले।
तो तुम 3 विकल्प हैं:
फ़ाइलों विशुद्ध रूप से जावास्क्रिप्ट हैं तो उन्हें अपने पेज में स्क्रिप्ट टैग के रूप में शामिल करते हैं।
यदि वे मिश्रित एचटीएमएल और जेएस हैं तो जेएस से {% कच्चे%} से बचें और फ़ाइलों को foo.html.twig टेम्पलेट्स के रूप में शामिल करें। यदि इस तरह के कई स्क्रिप्ट शामिल किए जा रहे हैं तो संभवतः आपके डिजाइनर थोड़ा रिफैक्टरिंग के साथ कर सकते हैं और अपनी स्क्रिप्ट को बाहरी फाइलों में ले जा सकते हैं (विकल्प 1 देखें)
यदि आप वास्तव में जोर देते हैं कि आप हमेशा लिख सकते हैं कच्चे HTML फ़ाइलों को शामिल करने के लिए टवीग एक्सटेंशन। (संपादित करें: इस विकल्प पर अधिक जानकारी के लिए नीचे @ हैप्रोग का उत्तर देखें)।
{{include_html ('foo/bar.html')}}
अद्यतन 2015 टहनी के बाद से जोड़ा गया है स्रोत समारोह:
{{ source('AcmeSomeBundle:Default:somefile.html.twig') }}
कुडोस लिए @ विकल्प 4 के लिए नीचे दी गई टिप्पणियों में निगेल एंजेल।
जो मैं करने की कोशिश कर रहा हूं उसके पास जावास्क्रिप्ट द्वारा उपयोग के लिए पृष्ठ में मूंछ टेम्पलेट्स को शामिल करने का एक तरीका है। '{% Raw%} 'टैग से घिरे टेम्पलेट में उन्हें सीधे रखकर काम करता है लेकिन मुझे लगता है कि यह बहुत असंगठित है और बहुत कम टेम्पलेट बिट्स होने पर अनावश्यक हो सकता है। AJAX के माध्यम से टेम्पलेट बिट्स को लोड करना अनावश्यक रूप से क्लाइंट एंड पर चीजों को धीमा कर देता है क्योंकि अधिक अनुरोध हैं। टेम्पलेट्स को एक टवीग फ़ाइल में रखना जिसमें उसमें कोई वास्तविक ट्विग मार्कअप नहीं है ('{% raw%}' के अलावा) मेरे अंदर ओसीडी डेवलपर कीड़े हैं लेकिन यह इस मामले में सबसे आसान विकल्प जैसा लगता है। धन्यवाद। – wdh
ट्विग ने 'स्रोत' फ़ंक्शन '{{स्रोत ('AcmeSomeBundle: Default: somefile.html.twig')}} –
को इसके बजाय ** phtml ** फ़ाइलों का उपयोग करना संभव है? –
मैं भी खोजने में कोशिश कर रहा एक ही समस्या पर आया ट्विग टेम्पलेट्स में कच्चे के रूप में फ़ाइलों (मूंछ टेम्पलेट्स) को शामिल करने का एक समाधान ताकि टिग उन्हें पार्स करने का प्रयास न करे।
सबसे पहले मेरे पास मूंछ टेम्पलेट फाइलें थीं जिसका नाम केवल someemplate.html था और {% raw %}
टैग में लपेटा गया था। यह थोड़ी देर के लिए काम किया, लेकिन फिर मैंने हैंडलबार्स प्लगइन (मूंछ सिंटैक्स के लिए) के साथ phpStorm आईडीई का उपयोग शुरू किया।PhpStorm के लिए फ़ाइलों को मूंछ सिंटैक्स के रूप में पहचानने के लिए, उन्हें एक अनन्य फ़ाइल एक्सटेंशन (.mustache
डिफ़ॉल्ट रूप से) की आवश्यकता होती है, इसलिए मैंने अपना someemplate.html का नाम बदलकर somemplate.mustache कर दिया लेकिन मुझे वास्तव में इस विचार को नापसंद किया गया कि मेरे मूंछ टेम्पलेट्स को लपेटने की आवश्यकता है टवीग टैग। तो मैंने अपने विकल्प 3 में @rdjs ने जो कहा, वह कर दिया। यह सबसे अच्छा समाधान आईएमओ है। ऐसा करके
function twig_include_raw(Twig_Environment $env, $template) {
return $env->getLoader()->getSource($template);
}
$twig->addFunction('include_raw', new Twig_Function_Function('twig_include_raw', array('needs_environment' => true)));
इसके साथ ही जगह आप आसानी से टहनी के बिना के रूप में "कच्चे" फ़ाइलों को शामिल कर सकते हैं में
उन्हें पार्स करने:
यहाँ काम कर टहनी विस्तार समारोह मैंने बनाया है
{{ include_raw('sometemplate.mustache')|raw }}
मैं भी बनाया एचटीएमएल हेड सेक्शन में मूंछ टेम्पलेट्स को सरलीकृत करने के लिए एक ट्विग मैक्रो:
{% macro mustache_script(id, file) -%}
<script id="{{ id }}" type="text/x-mustache-template">
{{ include_raw(file)|raw }}
</script>
{%- endmacro %}
और उपरोक्त मैक्रो के साथ फ़ाइल को अपने ट्विग टेम्पलेट (उदाहरण के लिए {% import "macros.twig" %}
) में आयात करने के बाद, आप आसानी से {{ mustache_script('sometemplate_tpl', 'sometemplate.mustache') }}
को HTML <head>
अनुभाग के अंदर अपने ट्विग टेम्पलेट्स में मूंछ टेम्पलेट फ़ाइलों को आसानी से आयात कर सकते हैं।
मुझे उम्मीद है कि यह किसी ऐसे व्यक्ति की सहायता करेगा जो एक ही समस्या का हल ढूंढ रहा है।
ऐसा लगता है कि यह एक समस्या को हल करेगा जो मैं देख रहा हूं, लेकिन मुझे नहीं पता कि twig_include_raw फ़ंक्शन को परिभाषित किया जाना चाहिए और $ twig-> addFunction को कब/कब कॉल करना चाहिए। क्या आप इसे थोड़ा और समझा सकते हैं। – Craig
@ क्रिएग क्षमा करें मैंने जल्द ही जवाब नहीं दिया है। आप कहीं भी फ़ंक्शन को परिभाषित कर सकते हैं। '$ Twig = new twig_Environment ($ loader) के साथ टवीग सेट अप करने के बाद बस' $ twig-> addFunction() 'को कॉल करना सुनिश्चित करें;' मेरे पास आमतौर पर मेरा स्वयं का twigInit() 'फ़ंक्शन होता है जो Twig को सेट करने में संभालता है मेरे द्वारा उपयोग किए जाने वाले एक्सटेंशन को लोड करने सहित वातावरण।आप http://twig.sensiolabs.org/doc/advanced.html – Haprog
पर ट्विग को विस्तारित करने के बारे में प्रलेखन पृष्ठ भी पढ़ना चाहेंगे। यह बहुत अच्छा है। यदि आप 'need_environment' के बाद विकल्पों में" is_safe '=> array (' all ') "जोड़ते हैं, तो आप" कच्चे "की आवश्यकता को बाईपास कर सकते हैं। –
यदि आप विस्तार में हैं, तो कारी पर फ़ॉलो करें .. आप इसे इस तरह से लागू कर सकते हैं।
public function getFunctions() {
return [
'include_raw' => new \Twig_Function_Method($this, 'twig_include_raw', array('needs_environment'=> true, 'is_safe'=> array('all')))
];
}
और यह $-- twig_include_raw प्रकार विधि होगी। आप अपने टेम्पलेट के भीतर शामिल होंगे:
{{ include_raw("my/file/here.html.twig") }}
"कच्चे" की आवश्यकता नहीं है।
मैं इस पोस्ट में आया, क्योंकि मेरे पास एक समान सवाल था। एक घंटे या तो खोज और कोशिश करने के बाद, मुझे पता चला कि Twig Version 1.15 the "source Function" was added से।
शायद यह भविष्य में किसी की सहायता करता है।
- 1. मैं विभिन्न HTML फ़ाइलों से टेम्पलेट्स को कैसे जोड़ूं
- 2. मैं जावास्क्रिप्ट फ़ाइलों को सर्वर-साइड कैसे शामिल करूं?
- 3. मैं बाहरी फ़ॉन्ट्स को HTML दस्तावेज़ में कैसे लोड करूं?
- 4. मैं जेएस रेल प्रतिक्रिया में एचटीएमएल कैसे शामिल करूं?
- 5. मैं HTML (.html) फ़ाइलों में PHP कोड/फ़ाइल कैसे जोड़ूं?
- 6. Rails3.1 - मैं कुछ विचारों में सीएसएस फ़ाइलों को कैसे शामिल करूं लेकिन दूसरों को नहीं?
- 7. django: शामिल टेम्पलेट्स में ब्लॉक का उपयोग
- 8. ग्रहण में मेरी परियोजना में .class फ़ाइलों को मैं कैसे शामिल करूं? (जावा)
- 9. मैवेन एपसेम्बलर के साथ कॉन्फ़िगरेशन फ़ाइलों को कैसे शामिल करूं?
- 10. मैं jQuery में HTML तत्व को कैसे स्थानांतरित करूं?
- 11. मैं एनएसएट्रिब्यूटेड स्ट्रिंग को HTML स्ट्रिंग में कैसे परिवर्तित करूं?
- 12. मैं सिम्फनी 2 प्रोफाइलर बार को कैसे अक्षम करूं?
- 13. संगठन मोड में, मैं अन्य (.org) .org फ़ाइल से अन्य .org फ़ाइलों को कैसे शामिल करूं?
- 14. रूबी जेम में डेटा फ़ाइलों को कैसे शामिल करें?
- 15. "शामिल" टैग का उपयोग करके Django में गतिशील रूप से टेम्पलेट्स को कैसे शामिल करें
- 16. सिम्फनी प्रतिक्रिया में वेब डीबग टूलबार को कैसे शामिल करें?
- 17. मैं सिम्फनी PHP में एक दोस्ताना यूआरएल कैसे उत्पन्न करूं?
- 18. मैं पाइथन सिद्धांतों में यूनिकोड तारों को कैसे शामिल करूं?
- 19. सभी संसाधनों को एक HTML फ़ाइल में कैसे शामिल करें?
- 20. मैं अपने .csproj फ़ाइल में DLL कैसे शामिल करूं?
- 21. मैं SQLite 3 में .sql फ़ाइलों को कैसे आयात करूं?
- 22. मैं आंशिक HTML कैसे पार्स करूं?
- 23. मैं अपने सी ++ प्रोजेक्ट में SQLite DLL कैसे शामिल करूं?
- 24. Jquery टेम्पलेट्स कैसे पाठ/html स्क्रिप्ट
- 25. मैं स्वचालित रूप से सभी javadoc package.html फ़ाइलों को package-info.java फ़ाइलों में कैसे परिवर्तित करूं?
- 26. पीपी के माध्यम से स्थापित ऐप में django टेम्पलेट्स को कैसे शामिल करें?
- 27. कोडनिर्देशक: जावास्क्रिप्ट फ़ाइलों को कैसे शामिल करें
- 28. मैं संगीतकार का उपयोग कर सिम्फनी 1.4 कैसे स्थापित करूं?
- 29. मैं नोकोगिरी में अगला HTML तत्व कैसे प्राप्त करूं?
- 30. मैं Jsoup में स्थानीय HTML फ़ाइल कैसे लोड करूं?
यदि ऑफिकल दस्तावेज कहता है कि इसे काम करना चाहिए, तो शायद आपको ट्विग और ट्विग बंडल को एक नए संस्करण में अपडेट करने का प्रयास करना चाहिए (अपनी डीपीएस फ़ाइल संपादित करें)। – greg0ire
मैंने कोशिश की है लेकिन मुझे लगता है कि इस मुद्दे को सिम्फनी ट्विग मुद्दे की बजाय टेम्पलेट स्थान/प्रकार को कैसे संभालता है। – wdh
फिर आपको एक बग रिपोर्ट दर्ज करनी चाहिए। – greg0ire