2010-03-16 16 views
11

मैं एक जेडएफ आरईएसटी यूआरएल से जीईटी पैरामीटर निकालने की कोशिश कर रहा हूं। यह वर्तमान अनुरोध नहीं है और मैं यूआरएल को कॉल नहीं करना चाहता हूं या मार्ग निष्पादित नहीं करना चाहता हूं, मुझे सिर्फ पैरामीटर चाहिए। मैं parse_url() जैसे उपयोगिता फ़ंक्शन की तलाश में हूं, लेकिन ज़ेंड रीस्ट प्रारूप के लिए। क्या कोई है, या मुझे पहिया को फिर से शुरू करना है?पैरामीटर के लिए ज़ेंड यूआरएल का विश्लेषण कैसे करें?

मैंने कुछ नई चीजों की कोशिश की है जैसे एक नया Zend_Controller_Request_Http लेकिन पैरामीटर पॉप्युलेट नहीं किए जा रहे हैं। यह एक वैध HTTP यूआरएल है।

संपादित करें: अनुरोध पर, एक नमूना Zend यूआरएल:

http://localhost/index/index/param1/foo/param2/bar 

तो मैं सिर्फ इस URL से param1 और param2 पाने के लिए कोशिश कर रहा हूँ।

# 2 संपादित करें: मैं इस कोशिश की, लेकिन यह काम करने के लिए प्रतीत नहीं होता:

$request = new Zend_Controller_Request_Http('http://localhost/home/test/param1/foo/param2/bar'); 
$front = Zend_Controller_Front::getInstance(); 
$route = new Zend_Rest_Route($front); 
var_dump($route->match($request)); 
+0

कैसे URL प्रदान के बारे में? – hobodave

उत्तर

8

$uri = Zend_Uri::factory($yourUrl) के बारे में कैसे? Zend_Uri देखें।

संपादित करें:
आह, मैं देखता हूं कि अब आपका क्या मतलब है। उस मामले में मेरा मानना ​​है कि आपको गॉर्डन ने जो सुझाव दिया है उसे आजमाएं। अपने मार्ग के match विधि के माध्यम से अपना यूआरएल चलाएं।

शायद की तरह कुछ (हालांकि निश्चित नहीं) के साथ रूटर से मार्ग को पुन: प्राप्त करने के लिए एक तरीका है:

$params = $route->match($yourUrl); 

.. जो देना चाहिए:

$route = Zend_Controller_Front::getInstance() 
           ->getRouter() 
           ->getRoute('theRouteName'); 

और फिर जैसे semething है आप पैरामीटर की एक सरणी है।

+1

यह मुझे Zend_Uri ऑब्जेक्ट देता है, लेकिन फिर पैरामीटर प्राप्त करने के लिए मैं उस ऑब्जेक्ट के साथ क्या करूँ? getQuery() झूठी रिटर्न देता है क्योंकि यह केवल मानक क्वेरी स्ट्रिंग (? param1 = foo और param2 = bar) की तलाश करता है। – wizzard

+1

बहुत बढ़िया। मैंने अभी getRoute ($ name) को प्राप्त करने के लिए CurrentRoute() बदल दिया है और यह समाधान मेरे लिए काम करता है। बहुत बहुत धन्यवाद! – wizzard

+0

+1। मेरा हटाना, यहां ऊपर उठाना। यह बहुत अधिक सरल है। बस एक मामूली sidenote: मैच() आंतरिक अनुरोध ऑब्जेक्ट के साथ आंतरिक रूप से $ urURL को प्रतिस्थापित करेगा यदि यह प्रारंभ करने के लिए Zend_Controller_Request_Http का उदाहरण नहीं है। – Gordon

8

अगर कोई यहाँ आया, एक संग्रहीत यूआरएल मार्गों अपने routes.ini पर परिभाषित पर विचार से (मॉड्यूल/नियंत्रक/कार्रवाई सहित) सभी पैरामीटर प्राप्त करने की कोशिश आपको:

/** 
* Code kept big just for example purposes 
* Creates a request object, route and injects back the properties parsed 
*/ 
$url = 'http://www.site.com/module/controller/action/param1/test'; 
$request = new Zend_Controller_Request_Http($url); 
Zend_Controller_Front::getInstance()->getRouter()->route($request); 

// Module name 
$request->getModuleName(); 

// Controller name 
$request->getControllerName(); 

// Action name 
$request->getActionName(); 

// All parameters 
$request->getParams(); 
संबंधित मुद्दे