2011-04-11 8 views
10

मैं kohana

<?php 

defined('SYSPATH') OR die('No direct access allowed.'); 

class Controller_Album extends Controller { 

    public function action_index() { 
    $content=$this->request->param('id','value is null'); 
    $this->response->body($content); 
    } 

} 

में एक नमूना नियंत्रक लिखा है लेकिन मैं शून्य मूल्य मिल रहा है जब मैं यूआरएल http://localhost/k/album?id=4 हिट करने के लिए कोशिश कर रहा हूँ प्राप्त करने के लिए की । मैं अनुरोध-> param और $ _GET और $ _POST विधि का उपयोग किए बिना कोहाना में अनुरोध चर का उपयोग कैसे कर सकता हूं?

+0

आप दूसरे तर्क क्यों पारित कर रहे हैं, 'मान शून्य है'? –

+1

यदि विकल्प नहीं है तो विकल्प तर्क है। यह उस मान के साथ मूल्य को प्रतिस्थापित करेगा। मान मान मौजूद नहीं है तो दूसरा मान डिफ़ॉल्ट मान है। –

+3

आपका कोहाना संस्करण क्या है? Ko3.1 – biakaveron

उत्तर

24

कोहाना वी 3.1 + अनुरोध वर्ग में query() और post() विधियां हैं। वे मनुष्य और सेटर के रूप में दोनों काम करते हैं:

// get $_POST data 
$data = $this->request->post(); 
// returns $_GET['foo'] or NULL if not exists 
$foo = $this->request->query('foo'); 

// set $_POST['foo'] value for the executing request 
$request->post('foo', 'bar'); 
// or put array of vars. All existing data will be deleted! 
$request->query(array('foo' => 'bar')); 

लेकिन याद रखें कि प्राप्त/पोस्ट डेटा सेट करने वर्तमान $ _GET/$ _ पोस्ट मूल्यों को ओवरलोड नहीं होंगे। अनुरोध निष्पादन के बाद उन्हें भेजा जाएगा ($request->execute() कॉल)।

4

कोनाना में (3.0) आप अनुरोध कक्षा के माध्यम से $ _GET/$ _ POST तक नहीं पहुंच सकते हैं। आपको सीधे $ _GET/$ _ POST

$this->request->param('paramname', 'defaultvalue') मार्ग में परिभाषित पैराम तक पहुंचने के लिए उपयोग करना होगा। मार्ग-यूआरएल जैसे <controller>/<action>/<id> के लिए आप मार्ग यूआरएल में भाग तक पहुंचने के लिए $this->request->param('id') का उपयोग करेंगे।

संपादित करें: कोहाना 3.1 में post और query अनुरोध के डेटा को प्राप्त करने/सेट करने के तरीके हैं; http://kohanaframework.org/3.1/guide/api/Request

+2

का उपयोग करते हुए 'अनुरोध $ 'और' पोस्ट()' गेटर्स/सेटर्स में '$ this-> अनुरोध-> क्वेरी (' आईडी ') का उपयोग करें। उदाहरण के लिए, '$ request-> क्वेरी ('var1')' '_GET ['var1']' मान (यदि मौजूद है) लौटाता है, जबकि '$ request-> पोस्ट ('var2', 'val2')' भेज देगा POST डेटा के रूप में 'var2 = val2'। – biakaveron

+0

@biakaveron क्या आप उत्तर के रूप में अपना उत्तर पोस्ट कर सकते हैं ताकि मैं आपका उत्तर –

+0

@biakaveron आह स्वीकार कर सकूं, मुझे नहीं पता था (अभी भी ko3.0 के साथ काम कर रहा है)। मैंने अपना जवाब अपडेट कर लिया है – SpadXIII

0

पर दस्तावेज़ों की जांच करें यदि मुझे अच्छी तरह से याद है, यदि आपने डिफ़ॉल्ट मार्ग नहीं बदला है, तो आप उस नियंत्रक के साथ यूआरएल http://localhost/k/album/4 का उपयोग करने का प्रयास कर सकते हैं।

डिफ़ॉल्ट मार्ग के रूप में रूप में है: /<controller>/<action>/<id>

आशा है कि यह मदद करता है।

1

सूचना है कि हालांकि यह $ उपयोग करने के लिए और अधिक स्पष्ट है इस-> अनुरोध> परम(), तो आप कार्रवाई परिभाषित कर सकते हैं के रूप में पैरामीटर:

public function action_index($id, $seo = NULL, $something = NULL).. 

और सीधे उन वार्स एक्सेस करते हैं। आपको इन मार्गों को उसी क्रम में परिभाषित करना होगा, जिन्हें वे इसी रूट में परिभाषित कर रहे हैं (कार्रवाई और नियंत्रक पैरा को छोड़कर, उन्हें अनुरोध स्तर पर परिभाषित किया गया है, इसलिए उन्हें कार्रवाई विधि में पास करने की आवश्यकता नहीं है)।

संपादित करें: यह कार्यक्षमता 3.1 में बहिष्कृत की गई थी और इसे 3.2 से हटा दिया गया है, इसलिए इससे बचने के लिए सबसे अच्छा है। आप यहां और अधिक पढ़ सकते हैं: http://kohanaframework.org/3.2/guide/kohana/upgrading#controller-action-parameters

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