В данном скринкасте рассмотрим как сохранять на сервер данные, созданные на клиенте.
Начнем с того, что создадим пустую модель и добавим в нее title:
var task = new App.Models.Task();
task.set({title: "Новая задача"});
Теперь не забудем удалить из нашей модели айдишник, заданный в атрибутах по умолчанию. Так как backbone, видя айдишник автоматически добавляет его в урл и меняет запрос на put, при вызове метода save. Нам же нужен обычный post, без указания айдишника. Айдишник сгенерится автоматически в базе данных:
App.Models.Task = Backbone.Model.extend({
defaults: {
title: '',
completed: 0
},
urlRoot: '/tasks'
});
И сразу же вызываем в консоли метод save:
task.save();
Отправляется post запрос на сервер. Осталось только принять его. В роуте создаем новую запись в БД. И возвращаем на клиент модель уже с айдишником:
Route::post('/tasks', function() {
$input = Input::json();
$newTask = Mission::create( array(
'title'=> $input->title,
'completed'=> $input->completed
));
$newTaskArray = array(
'id'=> $newTask->id,
'title'=> $input->title,
'completed'=> $input->completed
);
return json_encode($newTaskArray);
});
Проверим в БД. Строка создана. Еще раз поэкспериментируем в консоли с добавлением и изменением добавленной модели. У убедимся в том, что Backbone при создании отправляет post запрос, а при изменении put, при использовании одного и того же метода save. На этом все.
Источник:loftblog