Октябрь CMS - API Generator - как создавать и обновлять данные в базе данных - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь отправить данные в базу данных с помощью AJAX и плагина в CMS в октябре под названием «Генератор API».
Я не могу найти в его документации или в Google ничего, что мне поможет.

У меня есть следующий код:

$data = [{'room_id': {{room.id}}, 'amount': amount, 'arrival': '2018-04-01', 'departure': '2018-04-03,', 'reservation_type': 'owner'}]

$.ajax({
  url: '/api/v1/booking/create',
  data: $data,
  type: "post"
})
.done(function() {
  console.log('Success')
})
.fail(function() {
  console.warn('Something went wrong');
});

Я не получаю никакой ошибки, на самом деле, я получаю сообщение «Успех» в консоли, но данные не добавляются в базу данных.

Что я делаю неправильно?Пожалуйста, помогите.

Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2018

На самом деле вы делаете это немного неправильно [ Вы запускаете Ajax-запрос на wrong end-point ] , что плагин Api основан на https://laravel.com/docs/5.6/controllers#resource-controllers Resource Controller

Итак, для создания предмета вам нужно всего лишь выстрелить POST запросом к Created Api-End Point.Вам не нужно отправлять Array, просто отправьте простой простой Object

Рефакторинг вашего кода (это должно работать):

// Plaing object no array
$data = {'room_id': {{room.id}}, 'amount': amount, 'arrival': '2018-04-01',
       'departure': '2018-04-03,', 'reservation_type': 'owner'};

$.ajax({
    url: '/api/v1/booking', // <- just your Api-End [no create/store]
    data: $data,
    type: "post" // <- this post request indicates that you want to create/insert
})
.done(function(response) {
    // this will always fire when status code is 200
    console.log('Success', response); 
})
.fail(function() {
    // when status code is not 200 this will execute
    console.warn('Something went wrong');
});

Почему вы получаете success, хотя это не создает запись?

Потому что согласно Resource Controller нет метода create в api generator controller, поэтому October CMS обрабатывает /api/v1/booking/create [POST] запрос как 404 page not found и его обслуживающий [200] код состояния с 404 page not found как ajax response.

А страница 404 имеет 200 кодов состояния, так чтопопадает в категорию success и Ajax thinks it's a successful request и выводит на консоль сообщение success.

если есть сомнения, прокомментируйте.

...