2010-11-18 2 views
6

मैं एक श्रेणी में लिंक जोड़ने के लिए एक सरल सीआरयूडी बना रहा हूं। प्रत्येक श्रेणी में एक आईडी है। मेरे पास एक ऐसा दृश्य है जो किसी निश्चित श्रेणी के लिए सभी लिंक सूचीबद्ध करता है।ज़ेंड फ्रेमवर्क यूआरएल व्यू हेल्पर डिफ़ॉल्ट रूप से "आईडी" जोड़ता है

http://example.com/link/add/categoryId/3 

मैं वर्तमान में निम्न सिंटैक्स का उपयोग कर ध्यान में रखते हुए कि लिंक का निर्माण: कि ध्यान में रखते हुए मैं ऐड-रूप है जो के लिए एक लिंक है।

<?php echo $this->baseUrl();?>/link/add/categoryId/<?php echo $this->category['id']; ?> 

मुझे लगता है कि इस यूआरएल देखें हेल्पर का उपयोग करके क्लीनर किया जा सकता है।

<?php echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id'])); ?> 

लेकिन वह मेरा पीछा यूआरएल

http://example.com/link/add/id/3/categoryId/3 

..which एक अतिरिक्त "आईडी/3" है देता है। मैंने पढ़ा लेकिन यूआरएल व्यू हेल्पर के कोड को पूरी तरह समझ नहीं पाया। वहां एक अतिरिक्त आईडी/3 कैसे आती है?

धन्यवाद!

@Fge ने सही उत्तर दिया, नीचे मेरा अद्यतन पूर्ण वाक्यविन्यास है।

echo $this->url(array('controller'=>'link','action'=>'add','categoryId'=>$this->category['id']),null,true); 
+0

क्या आपके वर्तमान अनुरोध में कोई पैरामीटर 'आईडी' है? – Fge

+1

हां, मेरे पास एक ऐसा दृश्य है जो किसी निश्चित श्रेणी के लिए सभी लिंक सूचीबद्ध करता है। उस "निश्चित श्रेणी" में एक आईडी है, यूआरएल http://example.com/category/view/id/3 –

उत्तर

9

डिफ़ॉल्ट रूप से यूआरएल ViewHelper विलीन हो जाती है और वर्तमान अनुरोध पैरामीटर के साथ दिए गए मापदंडों ओवरराइड करता है। आपके मामले में आईडी-पैरामीटर की तरह। आप सभी मापदंडों रीसेट करना चाहते हैं आप viewhelper 3 पैरामीटर का उपयोग करने के लिए है: 'रीसेट':

$this->url(array(), 'route'(= null to use the default), true); 

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

+0

धन्यवाद है! मैं अपना पूरा नाम जोड़ने के लिए इस्तेमाल किया गया पूरा वाक्यविन्यास जोड़ने के लिए अपना प्रश्न संपादित करूंगा। क्या आपको नहीं लगता कि यह डिफ़ॉल्ट होने के लिए अजीब व्यवहार है? –

+0

कोई व्यवहार सही नहीं है। यह कई उपयोगों के लिए वाक्यविन्यास को कम करता है। कल्पना कीजिए कि आपके पास पेजिनेशन के साथ एक सर्वर-साइड सॉर्ट करने योग्य सूची है। पेजिनेशन और सॉर्टेबल हेडर के लिए आपको केवल $-> url ('order' => 'ASC') का उपयोग करना होगा; आदेश बदलने के लिए। पृष्ठ, फ़िल्टर इत्यादि जैसे अन्य सभी पैरामीटर ... बरकरार रहेगा। आपको अपने विचार में बिल्कुल उनकी परवाह नहीं है :) – Fge

+0

यह वास्तव में इसके लिए सही उपयोग केस है! –

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