2012-02-16 14 views
6

मैं फैटफ्री ढांचे के साथ काम करने और टेम्पलेट इंजन का उपयोग करने की कोशिश कर रहा हूं।फैटफ्री टेम्पलेट में PHP कोड

echo Template::serve('template.php'); 

समस्या जो मैं का सामना करना पड़ रहा है कि, अंदर template.php F3 टैग पहचाने जाते हैं, लेकिन किसी भी फ़ाइल PHP कोड काम नहीं करता है - मैं निम्न कोड के साथ टेम्पलेट प्रस्तुत करना। उदाहरण के लिए, अगर मैं template.php फ़ाइल में निम्न कोड है -

<?php 
if (F3::get('var') == 'var1') { 
    ?> 
    <span>var1 is present</span> 
    <?php 
} else { 
    ?> 
    <span>var1 not present</span> 
    <?php 
} 
?> 

यहाँ दोनों var1 is present और var1 not present वर का मूल्य से प्रभावित हुए बिना मुद्रित किया जाता है। इसके अलावा, लूप के लिए PHP काम नहीं कर रहे हैं - इसलिए मूल रूप से सभी PHP कोड काम नहीं कर रहे हैं।

हालांकि, अगर मैंने उपरोक्त PHP कोड लिखने के लिए <F3:check> का उपयोग किया है, तो सब कुछ ठीक काम करता है। क्या हम टेम्पलेट्स में PHP कोड का उपयोग नहीं कर सकते हैं। यदि यह मामला है, तो यह एक गंभीर सीमा है।

+0

यह दिलचस्प है ... मैं इस पर देख रहा हूँ। मैं अभी इसका उपयोग कर रहा हूं और अभी तक उस पहलू का परीक्षण नहीं किया है। –

+0

यूप यदि आप टेम्पलेट का उपयोग करते हैं तो आप PHP का उपयोग नहीं कर सकते हैं इसके बजाय आपको f3 टेम्पलेट टैग का उपयोग करने की आवश्यकता है। यदि आपको लगता है कि आपको PHP को टेम्पलेट इंजन के रूप में उपयोग करने की आवश्यकता है तो आपको दृश्य का उपयोग करने की आवश्यकता है। लेकिन मैं वहां कोई नकारात्मक नहीं देख रहा हूं। – amilaishere

उत्तर

8

मुझे जवाब मिला है, हालांकि मुझे यह वास्तव में पसंद नहीं है।

दो अलग-अलग काम करता है, F3::render() और Template::serve()

F3::render() साथ

आप PHP भाव का मूल्यांकन करें और F3::get() का उपयोग चर पुनः प्राप्त करने के कर सकते है। वेबसाइट के अनुसार: "The only issue with embedding PHP code in your templates is the conscious effort needed to stick to MVC principles"

Template::serve() केवल templating के लिए है। इसका मतलब बस templating भाषा को संसाधित करने के लिए है।

तो मूल रूप से, और हाँ यह बेकार है और मतलब नहीं है, तो आप F3::render() में PHP कोड का मूल्यांकन कर सकते हैं और आप templating चर का उपयोग नहीं कर सकते हैं ({{@var}}) -या- आप Template::serve() का उपयोग कर सकते हैं और आप केवल तक ही सीमित हैं PHP कार्यों को कॉल करना, और वास्तव में PHP कोड का मूल्यांकन नहीं करना।

+0

उत्तर के लिए धन्यवाद। मुझे लगता है कि मैं इसके साथ रह सकता हूं हालांकि यह ढांचे पर एक गंभीर सवाल है। कोई अन्य ढांचा नहीं (उदाहरण के लिए पिलोन) ऐसा करते हैं। आप कहते हैं कि कोई भी PHP कार्यों को कॉल कर सकता है। वे कार्य कहां स्थित हैं और मैं उन्हें कैसे कॉल कर सकता हूं? – Siddharth

+5

आप किसी भी फ़ंक्शन '{{date ('m/d/y', @ timestamp)}} को कॉल कर सकते हैं या मैं डेटा विस्फोट के लिए index.php पृष्ठ में परिभाषित एक निर्मित फ़ंक्शन का उपयोग कर सकता हूं, '{{exploded (@delim, @ वाक्यांश, 0)}} '। मुझे लगता है कि मुख्य बात यह है कि '{{}}' अनिवार्य रूप से छोटे टैग ' 'हैं ताकि आप छोटे टैग के साथ ब्रैकेट में कुछ भी कर सकें। –

+0

मुझे नहीं लगता कि यह बेकार है, लेकिन टेम्पलेट्स/विचारों (पन इरादे) में "वसा" (यानी PHP) को सीमित करने के लिए "जानबूझकर डिज़ाइन" होने का एक और उदाहरण है। के माध्यम से सशर्त सेगमेंट के साथ और के माध्यम से पुनरावर्तनीय सेगमेंट को टेम्पलेट में PHP कोड की आवश्यकता नहीं होनी चाहिए और यदि जटिल PHP की आवश्यकता है तो इसे नियंत्रक में मूल्यांकन करें जहां यह संबंधित है और इसे अपने टेम्पलेट में एक चर के रूप में एक्सेस करें।यूआई डिज़ाइनर के रूप में बहुत बेहतर कोड अलगाव प्रोग्रामिंग और प्रोग्रामर के साथ खुद को चिंता करने की आवश्यकता नहीं है बैक-एंड पर ध्यान केंद्रित कर सकते हैं। – nikolaosinlight

0

शायद विभिन्न टेम्पलेट इंजन का उपयोग करने का प्रयास करें जो आपको ब्लॉक परिवर्तनीय निर्भरता को आसान बनाने की अनुमति देगा?

PHPTal http://phptal.org/manual/en/split/tal-condition.html में उदाहरण के लिए आपको लगता है कि जैसे कि यह कर सकते हैं:

<div tal:condition="php: var == 'var1'"> 
.... 
</div> 
+0

क्यों? फैट फ्री बिल्ट-इन टेम्पलेट इंजन में पहले से ही सशर्त सेगमेंट तर्क है क्योंकि ओपी भी स्वयं का उल्लेख करता है जो पूरी तरह से उनके मुद्दे को संबोधित करता है। मुझे लगता है कि मुद्दा यह है कि ओपी PHP को अपने टेम्पलेट्स में रखना पसंद करता है जो कि यदि आप डिज़ाइन बनाम प्रोग्रामिंग और चिंताओं को अलग करने पर विचार करते हैं तो यह एक अच्छी बात नहीं है w.r.t. MVC। – nikolaosinlight

संबंधित मुद्दे