2013-02-27 183 views
6

के रूप में काम नहीं कर रहा है लगभग केक बुक उदाहरण का पालन किया।केकपीएचपी रीस्ट बेसिक मैपिंग अपेक्षित

Router::mapResources('incidentReports'); 
Router::parseExtensions('json'); 

दोनों से पहले

require CAKE . 'Config' . DS . 'routes.php'; 

मेरे नियंत्रक IncidentReportsController

class IncidentReportsController extends AppController { 

कहा जाता है जो कार्यों

index() 
view($id) 
add() 
edit($id) 
delete($id) 

यूआरएल के लिए जा रहे होते हैं

0,123,
www.myurl.com/incidentReports.json 

अपेक्षित के रूप में इंडेक्स() फ़ंक्शन को अनुरोध भेजता है।

यूआरएल

www.myurl.com/incidentReports/260.json 

के लिए जा रहे दृश्य() फ़ंक्शन करने के लिए नक्शे चाहिए, लेकिन एक 260() फ़ंक्शन जो मौजूद नहीं है के लिए नक्शे को trys।

www.myurl.com/incidentReports/view/260.json 

दृश्य() फ़ंक्शन पर नक्शा करता है और ठीक से काम करता है। हालांकि, मेरी समझ यूआरएल में "दृश्य" जरूरी नहीं है।

+1

क्या आपने अपने ऐप- या IncidentReportsController में 'RequestHandlerComponent' शामिल किया था? – nahri

+0

वहां पर है। लेकिन विचार के लिए धन्यवाद। – user2004338

+0

आपने अनुरोध का प्रयास कैसे किया? एक ब्राउज़र के साथ? पोस्टमैन (एक Google क्रोम ब्राउज़र ऐप) जैसे बाकी क्लाइंट के साथ पहले ही इसकी कोशिश की है? एक और समस्या यह हो सकती है कि RequestHandler केवल HTTP अनुरोध में 'स्वीकार करें' शीर्षलेख को देखता है। वहां आपको 'स्वीकृति: एप्लिकेशन/जेसन' या 'RequestHandler' की आवश्यकता सामान्य जीईटी अनुरोध के रूप में होगी। – nahri

उत्तर

0

documentation के अनुसार, आपने सबकुछ सही किया है, इसलिए मुझे यकीन नहीं है। अपने मार्गों में भी इसे (मार्ग सक्षम होना चाहिए) डालने का प्रयास करें।

Router::resourceMap(array(
    array('action' => 'index', 'method' => 'GET', 'id' => false), 
    array('action' => 'view', 'method' => 'GET', 'id' => true), 
    array('action' => 'add', 'method' => 'POST', 'id' => false), 
    array('action' => 'edit', 'method' => 'PUT', 'id' => true), 
    array('action' => 'delete', 'method' => 'DELETE', 'id' => true), 
    array('action' => 'update', 'method' => 'POST', 'id' => true) 
)); 
+0

बिल्कुल मेरे विचार, इस सवाल को पोस्ट करने से पहले बस यही सही था। कोई परिवर्तन नहीं होता है। – user2004338

3

एक ही समस्या थी। मेरे मामले में मैं यूआरएल में नियंत्रक नाम बदलकर इसे ठीक करने में सक्षम था।

काम नहीं किया: http://www.example.com/entityName.json
वर्क्स ठीक: http://www.example.com/entity_name.json

+0

दरअसल, यह समझ में आता है। 'MapResources' फ़ंक्शन नियंत्रक नाम पर 'इन्फ्लिक्टर :: अंडरस्कोर' करता है, इसलिए उदाहरण के लिए' entityName /: action' और 'entity_name /: action' के बीच कोई मिलान नहीं होगा। यह संस्करण 1.3 के बाद होता है (या इससे पहले, चेक नहीं किया गया था)। [एपीआई संदर्भ] (http://api.cakephp.org/2.2/source-class-Router.html#462-510)। – Nunser

0

यदि आपका नियंत्रक एक प्लगइन में है, तो साथ ही निर्दिष्ट करना होगा ..

जैसे: रूटर :: mapResources ('प्लगइन। नियंत्रक ');