2013-01-04 26 views
10

के साथ काम करता है मैं समझने की कोशिश कर रहा हूं कि कैसे टिग AJAX के माध्यम से टेम्पलेट लोड कर सकता है। अपनी वेबसाइट से, यह कैसे एक टेम्पलेट लोड करने के लिए स्पष्ट है (http://twig.sensiolabs.org/doc/api.html)कैसे AJAX कॉल TWIG

echo $twig->render('index.html', array('the' => 'variables', 'go' => 'here')); 

लेकिन यह कैसे एक AJAX के लिए इस कार्य को कहेंगे? आप टिग को कैसे बताएंगे कि आप कुछ ऐसा प्रस्तुत करना चाहते हैं जो केवल index.html का हिस्सा है ... और पूरे पृष्ठ को पुनः लोड नहीं किया गया है? मैंने टिग के एकमात्र अजाक्स उदाहरण (http://twig.sensiolabs.org/doc/recipes.html) को देखा, लेकिन यह व्याख्या नहीं करता कि कैसे टिग जानता है कि आप किस पृष्ठ को बदलना चाहते हैं। पृष्ठ सामग्री अपडेट में अपने अजाक्स कॉल परिणामों को मानते हुए। मुझे बस इसका एक सरल उदाहरण चाहिए, टिग के रेसिपी पेज पर क्या कुछ है।

1) index.html और content.html जैसे कई फाइलों में आपका index.html को अलग करें:

+0

यह नहीं जानता है। यदि आप पृष्ठ के एक हिस्से को अपडेट करना चाहते हैं, तो केवल उस खंड को प्रस्तुत करें जिसे अपडेट करने की आवश्यकता है। इसे कभी-कभी "आंशिक" कहा जाता है। – Charles

+0

क्या आपके पास एक उदाहरण है जो आप मुझे इंगित कर सकते हैं? – user1082428

+0

कोड, नहीं। प्रक्रिया, हां। अपने मुख्य टेम्पलेट को उन चीज़ों में विभाजित करें जो [शामिल] हो सकते हैं (http://twig.sensiolabs.org/doc/tags/include.html)। आप स्वतंत्र रूप से उन्हें AJAX अनुरोधों के लिए प्रस्तुत कर सकते हैं, और केवल उन्हें मुख्य पृष्ठ पर इनलाइन शामिल कर सकते हैं। सिद्धांत रूप में। यह थोड़ी देर के बाद से मैंने टवीग के साथ काम किया था, इसलिए मैं इसे उत्तर के रूप में पोस्ट नहीं कर रहा हूं। – Charles

उत्तर

8

ऐसे कई तरीके है कि पूरा करने के लिए कर रहे हैं। फिर content.html को शामिल करने के लिए index.html में include फ़ंक्शन का उपयोग करें।

उदाहरण:

if(isAjaxRequest()) //try to find the right function here 
    echo $twig->render('content.html', array('the' => 'variables', 'go' => 'here')) 
else 
    echo $twig->render('index.html', array('the' => 'variables', 'go' => 'here')); 

संपादित करें: आप उदाहरण के लिए jQuery के साथ अपने ajax अनुरोध करते हैं:

$.get('yoururl', function(data) { 
    $('#divtoremplace').html(data); 
}); 

2) request.ajax बूलियन आपका index.html में प्रयोग करें

{% if request.ajax == false %} 
<p>My header, not reloaded with ajax</p> 
{% endif %} 

<p>My content, reloaded with ajax</p> 

{% if request.ajax == false %} 
<p>Other content, not reloaded with ajax</p> 
{% endif %} 

सुनिश्चित नहीं है दूसरे के बारे में, लेकिन यह दस्तावेज दस्तावेज के अनुसार चाल करना चाहिए। सबसे अच्छा तरीका पहला समाधान है, अपना कोड अलग करें।

+0

मैंने request.ajax और Twig का उपयोग करने का प्रयास किया है, यह एक त्रुटि फेंक दी है कि यह अस्तित्व में नहीं है, इसलिए मुझे इसे सर्वर की ओर से उत्पन्न करना है, सही? यह एक twig वैश्विक चर नहीं है। – user1082428

+1

मैं अंततः इसे प्राप्त करता हूं, और मेरा स्वयं का उदाहरण अब काम करता है। सबको शुक्रीया! – user1082428

+1

आप AJAXRequest() या Twig टेम्पलेट के लिए एक चर कैसे पास करेंगे? –

9

सीधे टेम्पलेट में:

{% if app.request.isXmlHttpRequest() %} 
    // code if ajax request 
{% else %} 
    // code if not ajax request 
{% endif %} 

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

  • कोई संबंधित समस्या नहीं^_^