Laravel - передать ввод формы из углового в API-контроллер? - PullRequest
0 голосов
/ 19 сентября 2019

У меня в бэкэнде контроллер delete, выполненный в угловом исполнении.Его угловой контроллер выглядит так:

angular.module('dashboard')
.controller('CoursesDeleteController', ['$scope', '$http', '$location', '$routeParams', function ($scope, $http, $location, $routeParams) {
    $scope.id = $routeParams.id;
    $scope.courses = {
        delete: 0
    };

    $scope.loaded = false;
    $scope.busy = false;
    $scope.error = false;

    $scope.setDelete = function (value) {
        $scope.webinarcourses.delete = value;
    };

    $scope.delete = function () {
        $scope.busy = true;
        $http.delete('/api/courses/' + $scope.courses.id, $scope.courses).then(function (response) {
            $scope.busy = false;
            $location.path('/courses');
        }, function (response) {
            $scope.busy = false;
            $scope.error = 'Unable to delete course...';
        });
    };

    var load = function () {
        $scope.busy = true;
        $http.get('/api/courses/' + $scope.id).then(function (response) {
            $scope.courses = response.data;
            $scope.busy = false;
            $scope.loaded = true;
        }, function () {
            $scope.busy = false;
            $scope.error = 'Unable to load course...';
        });
    };

    load();
}]);

Вид:

<form role="form" class="panel-footer">
    <div class="form-group col-xs-12 col-sm-6 col-md-2">
        <label>Delete from Integrations?</label><br>
        <div class="btn-group" data-toggle="buttons">
            <label class="btn btn-info"
                   ng-class="{ active: courses.delete == 1 }"
                   ng-click="setDelete(1)">
                <input type="radio"> Yes
            </label>
            <label class="btn btn-info"
                   ng-class="{ active: courses.delete == 0 }"
                   ng-click="setDelete(0)">
                <input type="radio"> No
            </label>
        </div>
    </div>

    <button class="btn btn-danger" ng-click="delete()" ng-disabled="busy || !loaded"><span class="glyphicon glyphicon-trash"></span> Delete</button>
    <a href="#/courses/view/{{ id }}" class="btn btn-default" role="button"><span class="glyphicon glyphicon-arrow-left"></span> Back</a>
    <div class="progress progress-striped active push-sm" ng-show="busy">
        <div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">
            <span class="sr-only">Busy...</span>
        </div>
    </div>
</form>

Тогда в моем контроллере API:

public function destroy($id)
    {
        $data=Input::all(); // do something with this data...
        \App\Courses::find($id)->delete();
    }

Проблема в том, что я не вижулюбые данные.Я думал, что у меня будет courses.delete, доступное через Input::, но это ноль.

Я должен что-то упускать из виду и, возможно, это связано с тем фактом, что модель Courses не имеет delete column, но я подумал, что это не имеет значения, если я просто перехожу с angular на контроллер API и не пытаюсь получить доступ к несуществующему столбцу.Я просто пытаюсь использовать courses.delete как способ определения некоторых действий в методе удаления контроллера API.

1 Ответ

0 голосов
/ 19 сентября 2019

Хорошо, я упустил из виду особенности метода delete.Оказывается, мне просто нужно было сделать это:

$http.delete('/api/courses/' + $scope.courses.id, {
    params: {delete: $scope.courses.delete}
}).then(function (response) {

regards

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...