2010-01-19 10 views
9

bootstrap.php में, जहां आप मार्ग निर्धारित करते हैं, मुझे उन्हें काम करने में कठिनाई हो रही है। मैंने कुछ समय पहले कुछ दस्तावेज पढ़ा था कि मुझे फिर से नहीं मिल रहा है जो उन्हें बताता है। यहाँ मेरी उदाहरणक्या कोई कोहाना 3 की रूटिंग सिस्टम समझा सकता है?

Route::set('products', 'products/(type)', array('type' => '.+')) 
    ->defaults(array(
    'controller' => 'articles', 
    'action' => 'view_product', 
    'page' => 'shock-absorbers', 
    )); 

मैं सोचा कि मतलब होगा products/something तरह के अनुरोध के articles नियंत्रक, और action_view_product() विधि लोड होगा से एक है। लेकिन मैं इसे काम नहीं कर सकता।

क्या कोई मुझे बता सकता है कि वे वास्तव में कैसे काम करते हैं, और सभी विधि पैरामीटर क्या हैं?

उत्तर

5

मैंने सोचा था कि एक अनुरोध मतलब उत्पादों/कुछ लेख नियंत्रक, और action_view_product नियंत्रक लोड होगा की तरह होगा। लेकिन मैं इसे काम नहीं कर सकता।

आपको बोल्ड हिस्सा गलत मिला।

class Controller_Articles extends Controller { 
    public function action_view_product() { 
     $params = $this->request->param(); 
     // if the uri is `products/something' then $params['type'] == 'something' 
    } 
} 

संपादित करें: यह वास्तव में विधि लेख नियंत्रक के action_view_product लोड होगा

हे भगवान ओह अपने देवता कारण है कि मैं नोटिस नहीं किया था !!!

वास्तविक समस्या आपके मार्ग पैटर्न के भीतर है! यह कोण ब्रैकेट के साथ products/(<type>) होना चाहिए था। वे कोहाना को संकेत देंगे कि आप 'टाइप' का अर्थ शाब्दिक के बजाय पैरामीटर नाम होना चाहते हैं।

+0

क्षमा करें, कि एक टाइपो था! मैं अभी भी मेरे लिए काम करने के लिए प्रतीत नहीं कर सकता। – alex

+0

क्या आपने अपनी कंट्रोलर php फ़ाइल को सही फ़ोल्डर में रखा था? – Lukman

+0

हां, मेरे पास एक डिफ़ॉल्ट मार्ग है जो सभी को कैप्चर कर रहा है (और ठीक काम कर रहा है) – alex

3

uff, खेद है, तो संकेत तो और अधिक से अधिक कम से पता चलता है सही ढंग से

'products/(type)' should be 'products/(<type>)' 
+0

या इससे भी बेहतर: '' उत्पाद (/ ) '', क्योंकि अन्यथा 'उत्पाद' (स्लैश के बिना) मिलान नहीं किया जाएगा (हालांकि आप इसे इस तरह से चाहते हैं) – giorgio

3

कोष्ठक वैकल्पिक भागों (अगर वे याद कर रहे हैं रेगुलर एक्सप्रेशन से मेल होगा) संकेत नहीं है। ये स्थैतिक और/या नामित चर हो सकते हैं। कोण कोष्ठक मार्ग में एक नामित चर जो के माध्यम से नियंत्रक में पहुँचा जा सकता है संकेत मिलता है:

$this->request->param('type'); 

मैं आधिकारिक मार्ग गाइड जो आप here पढ़ सकते हैं लिखा है, यह आपके सभी प्रश्नों के उत्तर देना चाहिए।

0

रिकॉर्ड के लिए:

निर्देशिका, नियंत्रक और कार्रवाई तो की तरह सार्वजनिक गुण के रूप में अनुरोध से पहुँचा जा सकता:

// From within a controller: 
$this->request->action; 
$this->request->controller; 
$this->request->directory; 

// Can be used anywhere: 
Request::instance()->action; 
Request::instance()->controller; 
Request::instance()->directory; 

स्रोत: http://kohanaframework.org/3.0/guide/kohana/routing#request-parameters

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