2012-02-18 11 views
17

प्राप्त करें मैं एक टिग टेम्पलेट से वर्तमान यूआरएल कैसे प्राप्त कर सकता हूं?ट्विग टेम्पलेट्स इंजन: वर्तमान यूआरएल

मैं बिना किसी अन्य ढांचे के PHP के साथ ट्विग का उपयोग कर रहा हूं।

+0

क्यों वर्तमान यूआरएल टेम्पलेट चर के रूप में पास नहीं है? या आप एक टेम्पलेट टैग लिख सकते हैं जो यूआरएल आउटपुट करता है। –

उत्तर

6

वर्तमान URL

वर्तमान URL अपने वेब सर्वर द्वारा आपूर्ति और $_SERVER सुपर वैश्विक करने के लिए लिखा है ढूँढना। इस छोटी स्क्रिप्ट को चलाएं, <?php echo '<pre>'; print_r($_SERVER);, अपने सर्वर के माध्यम से और उस मूल्य को ढूंढने के लिए चारों ओर रूट करें जिसे आप ढूंढ रहे हैं। इस विषय पर

संबंधित प्रश्न:

The PHP manual describes the nature of the available $_SERVER values here

TWIG

URL मिल जाने के बाद में URL प्राप्त करना है, तो आप जब टहनी टेम्पलेट उदाहरण पर render(...) बुला एक टेम्पलेट चर के रूप में इसे पारित करने की जरूरत है। उदाहरण के लिए, आप इसे कोड कर सकते हैं।

$current_url = // figure out what the current url is 

// pass the current URL as a variable to the template 
echo $template->render(array('current_url' => $current_url)); 

टेम्पलेट में चर का उपयोग करने के लिए आपको {{ variable_name }} सिंटैक्स का उपयोग करें।

+0

मुझे आश्चर्य है कि क्या Twig से यूआरएल प्राप्त करने के लिए कोई आंतरिक उपकरण (चर ओटी विधि) है? – nKognito

+0

आपको इस उद्देश्य के लिए पहले से ही लिखा गया कुछ कोड मिल सकता है, लेकिन वर्तमान यूआरएल को पुनर्प्राप्त करना एक टेम्पलेट इंजन के दायरे में नहीं है, इसलिए मुझे संदेह है कि टिग में कुछ भी बनाया गया है। मुझे निश्चित रूप से कुछ भी नहीं मिला। – erisco

0

यहां कुछ ऐसा जो मुझे स्लीक्स फ्रेमवर्क के साथ सामान्य बनाने के लिए मिला है। मुझे लगता है कि मेरा समाधान सही नहीं है लेकिन यह काम पूरा हो गया है।

अपने PHP कोड में

इस कोड जोड़ें:

$app = new Silex\Application(); 
// add the current url to the app object. 
$app['current_url'] = $_SERVER['REQUEST_URI']; 

फिर अपने टहनी टेम्पलेट में आप कर सकते हैं

{{ app.current_url }} 

मुझे पता है इस विधि के botom लाइन है क्या करते हैं।

25

Silex में निम्नलिखित काम करता है और Symfony2 में सबसे निश्चित रूप से वे अनुरोध वर्ग का हिस्सा के रूप में (मैं हालांकि परीक्षण नहीं किया है):

{{ app.request.getRequestUri() }} 
+5

'{{app.request.requestUri}}' – eightyfive

+0

इससे भी बेहतर, हाँ। – neemzy

+1

इसे बहिष्कृत किया गया है, किसी को इसका उपयोग नहीं करना चाहिए। https://github.com/silexphp/Silex/issues/1257#issuecomment-141058724 – Tieme

2

दिमाग में सर्वोत्तम अभ्यास रखना, इस समय आपको Symfony\Component\HttpFoundation\RequestStack का उपयोग करना चाहिए।

http://symfony.com/blog/new-in-symfony-2-4-the-request-stack देखें।

Symfony 2.4 के रूप में, सबसे अच्छा अभ्यास अनुरोध सेवा इंजेक्षन कभी नहीं करने के लिए, लेकिन इसके बजाय request_stack सेवा इंजेक्षन करने के लिए है [...]

तो एक Silex आवेदन में इसके साथ प्राप्त किया जा सकता :

app.request_stack.getCurrentRequest.getUri 
संबंधित मुद्दे