2016-12-01 3 views
1

: Ich bin in AngularJS ein crud machen Laravel und angularjs mit i einer Funktion ist mit, dass die Nutzung für beiden Updates sein und meinen Funktionscode speichern sind

$scope.save = function (modalstate, id) { 
     var url = $scope.url; 
     var method = "POST"; 
     console.log(modalstate); 
     //append id to the URL if the form is in edit mode 
     if (modalstate === 'edit') { 
      url += "/" + id; 
      method = 'PATCH'; 
     } 
     var data = {}; 
     data = $scope.formdata; 

     if (!$("#myform").isValid()) { 
      return false; 
     } else { 
      console.log('request'); 
      $http({ 
       method: method, 
       url: url, 
       data: data, 
       headers: {'Content-Type': undefined}, 
       transformRequest: function (data) { 
        console.log(angular.toJson(data)); 
        var formData = new FormData(); 
        formData.append("data", [angular.toJson(data)]); 

        if (typeof (data.logo) != "undefined") 
        { 
         formData.append("file", data.logo); 
        } 
        console.log(formData); 
        return formData; 
       }, 
      }).success(function (response) { 
       console.log(response); 
       // location.reload(); 
      }).error(function (response) { 
       console.log(response); 
       alert('This is embarassing. An error has occured. Please check the log for details'); 
      }); 
     } 

Above Funktion funktioniert perfekt, wenn ich den Datensatz speichern. Aber beim Bearbeiten des Datensatzes für die Aktualisierung verwende ich PATCH Anfrage, aber jetzt gibt es ein Problem durch die Verwendung von PATCH Anfrage Ich erhalte leere Array auf der Serverseite. Bitte hilf mir, mein Problem zu lösen.

+0

Können Sie zeigen uns Ihre 'Controller \ action' und geben Sie den Code der Route – xAoc

+0

Registrierung Ich bin mit Route nur mit Ressourcen' Strecke :: Ressource (‘ Menschen "," PeopleController ");' –

Antwort

1

Laravel verwendet method spoofing, um eine bessere Unterstützung für REST-konforme Schnittstellen zu bieten, wie die, die Sie mit Route::resource erstellen möchten. Das bedeutet, dass Sie anstelle der Methode PATCH die Methode POST verwenden und einen Schlüssel _method mit dem Wert PATCH zusammen mit Ihren Anforderungsdaten übergeben.

So könnte Ihr Code wie folgt aussehen:

$scope.save = function (modalstate, id) { 
     var url = $scope.url, 
      data = $scope.formdata; 

     //append id to the URL if the form is in edit mode 
     if (modalstate === 'edit') { 
      url += "/" + id; 
      data = angular.merge(data, {_method: 'PATCH'}); 
     } 

     if (!$("#myform").isValid()) { 
      return false; 
     } else { 
      console.log('request'); 
      $http({ 
       method: "POST", 
       url: url, 
       data: data, 
       headers: {'Content-Type': undefined}, 
       transformRequest: function (data) { 
        console.log(angular.toJson(data)); 
        var formData = new FormData(); 
        formData.append("data", [angular.toJson(data)]); 

        if (typeof (data.logo) != "undefined") 
        { 
         formData.append("file", data.logo); 
        } 
        console.log(formData); 
        return formData; 
       }, 
      }).success(function (response) { 
       console.log(response); 
       // location.reload(); 
      }).error(function (response) { 
       console.log(response); 
       alert('This is embarassing. An error has occured. Please check the log for details'); 
      }); 
     } 
Verwandte Themen