17

मैं एक मार्ग का उपयोग कर एक क्वेरी स्ट्रिंग के साथ एक यूआरएल बनाने के इतने तरह का प्रयास कर रहा हूँ:कैसे आप ZF2/ZF3 यूआरएल दृश्य सहायक क्वेरी पैरामीटर को जोड़ सकते हैं

$this->url('users') -> /users 
$this->url('users', ['sort' => 'desc']) -> /users?sort=desc 

हालांकि इस प्रतीत नहीं होता है काम (दूसरा सहायक वास्तव में /users आउटपुट करता है)। इस unofficial, out-of-date documentation के अनुसार मार्ग नाम पर /query जोड़कर ऐसा करने का एक तरीका था, हालांकि यह एक मार्ग-नहीं मिला अपवाद देता है।

क्या यह वर्तमान यूआरएल सहायक का उपयोग करके किया जा सकता है?

उत्तर

11

आप इस तरह अपने उपयोगकर्ताओं को रूट के लिए एक बच्चे मार्ग बना सकते हैं:

'users' => array(
    'type' => 'Literal', 
    'options' => array(
     'route' => '/users', 
     'defaults' => array(
      '__NAMESPACE__' => 'User\Controller', 
      'controller' => 'Index', 
      'action' => 'list', 
     ), 
    ), 
    'may_terminate' => true, 
    'child_routes' => array(
     'query' => array(
      'type' => 'Query', 
     ), 
    ), 
), 

तो आप $this->url('users/query', array('sort' => 'desc')) इकट्ठा कर सकते हैं।

may_terminate से true सेट करना न भूलें!

+0

धन्यवाद! यह काम करता है, सिवाय इसके कि जब मैं माता-पिता मार्ग से पैरामीटर प्राप्त करने के लिए 'url ($ रूटनाम, $ पैरा, सत्य)' का उपयोग करता हूं, तो यह डिफ़ॉल्ट नियंत्रक और क्रिया पैरामीटर पैरामीटर के रूप में जोड़ता है - क्या इससे बचने का कोई तरीका है? – Ross

+0

दिलचस्प ... क्या यह अन्य मौजूदा पैरा भी जोड़ता है? अभी तक इसका उपयोग नहीं किया है, लेकिन हो सकता है कि कुछ ट्रिक-आश की परेशानी को नियंत्रित करने से पहले नियंत्रक और एक्शन पैराम को अनसेट करने के लिए ... –

+7

अद्यतन ZF2 संस्करण – webcoder

57

संस्करण 2.1.4 के बाद से आप उपयोगकर्ता त्रुटि

क्वेरी मार्ग जेडएफ 2.1.4 के रूप में पदावनत के पार चलो; HTTP रूटर \ के कोडांतरण विधि बजाय

प्रयोग उदाहरण के "क्वेरी" विकल्प का उपयोग: हाँ

$name = 'index/article'; 
$params = ['article_id' => $articleId]; 
$options = [ 
     'query' => ['param' => 'value'], 
    ]; 
$this->url($name, $params, $options); 
+11

आपको आशीर्वाद दें! यह मुझे पागल कर रहा था! आपके नियंत्रकों में रीडायरेक्ट करने वाले किसी भी व्यक्ति के लिए, कोशिश करें: '$ this-> रीडायरेक्ट() -> toRoute (" अनुक्रमणिका/आलेख ", सरणी (" article_id "=> $ articleId), सरणी (" क्वेरी "=> सरणी (" param "=>" मान "))); '- उम्मीद है कि इससे मदद मिलती है! :) –

8

यह वर्तमान URL दृश्य सहायक का उपयोग किया जा सकता है।

$this->url('users', [], array('query' => array('sort' => 'desc'))) 

आपको क्वेरी स्ट्रिंग बाल मार्ग सेटअप की आवश्यकता नहीं है। जब तक आपके पास 'उपयोगकर्ताओं' के लिए रूट सेटअप हो, तब तक आप अपने नियंत्रक में 'सॉर्ट' परम देख सकते हैं और जहां आवश्यक हो वहां उपयोग कर सकते हैं।

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