Laravel MethodNotAllowedHttpException
फेंकता है जब हम एक HTTP क्रिया उस मार्ग का समर्थन नहीं करता का उपयोग कर एक मार्ग के लिए एक अनुरोध भेजने के लिए प्रयास की उम्मीद है। इस सवाल के मामले में, हम इस त्रुटि जावा स्क्रिप्ट कोड भेजता है एक /job‑management
के मार्ग है, जो एक मार्ग है कि केवल और पोस्ट अनुरोध प्राप्त समर्थन करता है, द्वारा नियंत्रित किया जाता के साथ एक यूआरएल के लिए अनुरोध हटाएं देखें। हमें यूआरएल को परंपरागत प्रारूप में बदलना होगा लैरवेल संसाधन नियंत्रकों के लिए अपेक्षा करता है।
त्रुटि भ्रमित है क्योंकि यह इस तथ्य को छुपाती है कि हम गलत यूआरएल को अनुरोध भेज रहे हैं। क्यों समझने के लिए है (documentation से) Route::resource()
द्वारा बनाई मार्गों पर एक नज़र डालें:
Verb URI Action Route Name
GET /job-management index job-management.index
GET /job-management/create create job-management.create
POST /job-management store job-management.store
GET /job-management/{position} show job-management.show
GET /job-management/{position}/edit edit job-management.edit
PUT/PATCH /job-management/{position} update job-management.update
DELETE /job-management/{position} destroy job-management.destroy
ऊपर दिखाए गए के रूप में /job-management
के रास्ते घटक के साथ यूआरएल नियंत्रक के index()
और store()
तरीकों जो डॉन 'को दिए गए टी हटाएं अनुरोधों को संभालें। यही कारण है कि हम अपवाद देखते हैं।
एक के रूप में सवाल में दिखाया गया अनुरोध हटाने की कार्यवाही करने, हम /job-management/{position}
, जहां {position}
स्थिति मॉडल हम हटाना चाहते हैं की आईडी है की तरह एक पथ के साथ एक यूआरएल के लिए अनुरोध भेजने के लिए की जरूरत है। जावास्क्रिप्ट कोड कुछ ऐसा दिख सकता है:
axios.delete('/job-management/5', this.deletedata).then((res) => { ... })
मैंने अवधारणा को स्पष्ट रूप से स्पष्ट करने के लिए URL में स्थिति आईडी को हार्डकोड किया है। हालांकि, हम संभावना इस आईडी के लिए एक चर का उपयोग करना चाहते हैं:
let positionId = // get the position ID somehow
axios.delete(`/job-management/${positionId}`, this.deletedata).then((res) => { ... })
इस रूप में यूआरएल नियंत्रक के destroy()
विधि के लिए DELETE अनुरोध रूट करने के लिए Laravel सक्षम बनाता है। उपरोक्त उदाहरण ES6 template string literals का उपयोग करता है क्योंकि प्रश्न में दिए गए कोड से पता चलता है कि हम इस सुविधा का समर्थन करने वाले जावास्क्रिप्ट का एक संस्करण उपयोग कर रहे हैं। मानक उद्धरण चिह्नों के बजाय टेम्पलेट स्ट्रिंग के आस-पास बैकटिक्स (`
) की नियुक्ति पर ध्यान दें।
स्रोत
2017-11-20 23:27:48
"मैं 'रिकॉर्ड' को हटाने के लिए अक्षरों को सेट करना चाहता हूं ..." लेकिन '$ position' का तात्पर्य है कि आप एकाधिक रिकॉर्ड हटाना चाहते हैं? क्या आप स्पष्टीकरण दे सकते हैं यदि आप एक संसाधन या एकाधिक संसाधनों को हटाने का प्रयास कर रहे हैं? – Traxo
@CyRossignol धन्यवाद इस समस्या को हल किया –