web-dev-qa-db-fra.com

axios.patch / axios.put ne fonctionne pas dans Vue et Laravel

J'ai ce code dans mon fichier vue

saveProfile() {
    axios.patch('/api/pegawai/' + this.id, {
         data: this.data
    })
    .then(function (response) {
         console.log(response);
    })
    .catch(function (error) {
         console.log(error);            
    });
}

et dans mon laravel contrôleur

public function update(Request $request, $id){
     return $this->sendResponse('request retrieved');
}

public function sendResponse($message){
    $response = [
        'success' => true,
        'message' => $message,
    ];
    return response()->json($response, 200);
}

lorsque j'exécute le fichier vue pour transmettre les données au contrôleur il devrait me donner une réponse json à la console du navigateur avec la valeur suivante

{
  'success' : true,
  'message' : 'request retrieved'
}

mais actuellement ça donne moi une erreur 500 internal server error via la console du navigateur. J'obtiens le même résultat si je remplace axios.patch avec axios.put.

--- Ce que j'ai essayé ---

J'ai essayé de faire axios.post et axios.get avec les mêmes scénarios que axios.patch et les deux fonctionnent correctement. Contrôleur de poste et obtenez:

public function store(Request $request){
    return $this->sendResponse('request retrieved');
}

public function index(){  
    return $this->sendResponse('request retrieved');
}
7
Rafid

réellement HTTP PUT n'est pas reconnu par la norme html. essayez de faire du hack comme ça:

saveProfile() {
    axios.post('/api/pegawai/' + this.id, {
         data: this.data,
         _method: 'patch'
    })
    .then(function (response) {
         console.log(response);
    })
    .catch(function (error) {
         console.log(error);            
    });
}
8
Hassanal Shah