2017-11-17 49 views
5

से हटा दें मैं सेटअप Axios चाहते हैं एक संसाधन का उपयोग करके मार्ग रिकॉर्ड को हटाना:Laravel संसाधन मार्ग Axios

axios.delete('/job-management', this.deletedata).then((res)=>{ 
    console.log(res); 
}) 

मेरी मार्गों के लिए मेरे पास है है:

public function destroy(Positions $positions) { 
    return $positions; 
} 

लेकिन ऊपर हमेशा "विधि की अनुमति नहीं है" लौटाता है। मैं axios delete() विधि के साथ एक डिलीट अनुरोध कैसे संभाल सकता हूं?

+0

"मैं 'रिकॉर्ड' को हटाने के लिए अक्षरों को सेट करना चाहता हूं ..." लेकिन '$ position' का तात्पर्य है कि आप एकाधिक रिकॉर्ड हटाना चाहते हैं? क्या आप स्पष्टीकरण दे सकते हैं यदि आप एक संसाधन या एकाधिक संसाधनों को हटाने का प्रयास कर रहे हैं? – Traxo

+0

@CyRossignol धन्यवाद इस समस्या को हल किया –

उत्तर

4

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 का उपयोग करता है क्योंकि प्रश्न में दिए गए कोड से पता चलता है कि हम इस सुविधा का समर्थन करने वाले जावास्क्रिप्ट का एक संस्करण उपयोग कर रहे हैं। मानक उद्धरण चिह्नों के बजाय टेम्पलेट स्ट्रिंग के आस-पास बैकटिक्स (`) की नियुक्ति पर ध्यान दें।

3

के रूप में मैं ऊपर अपने कोड में देख सकते हैं, आप Positionsdestroy विधि को पैरामीटर के रूप वाक्पटु लेकिन अपने vueJS आप इस वस्तु उत्तीर्ण नहीं होते हैं में गुजरती हैं। उस के लिए आप इसे इस प्रकार से होकर गुजरेगा:

axios.delete('/job-management/${id}').then((res)=>{ 
    console.log(res); 
}) 

और उर Axios का यूआरएल के अंदर आईडी परम, हटाने यह डेटा या किसी थिंक की आपत्ति कर सकते हैं।

मैं इस मदद आप

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