下應該給你一個想法(PHP控制器採用的Silex框架+巴黎庫,用於數據訪問)來實現:
// GET /{resource}/{id} Show
$app->get('/api/todos/{id}', function ($id) use ($app) {
$todo = $app['paris']->getModel('Todo')->find_one($id);
return new Response(json_encode($todo->as_array()), 200, array('Content-Type' => 'application/json'));
});
// POST /{resource} Create
$app->post('/api/todos', function (Request $request) use ($app) {
$data = json_decode($request->getContent());
$todo = $app['paris']->getModel('Todo')->create();
$todo->title = $data->title;
$todo->save();
return new Response(json_encode($todo->as_array()), 200, array('Content-Type' => 'application/json'));
});
// PUT /{resource}/{id} Update
$app->put('/api/todos/{id}', function ($id, Request $request) use ($app) {
$data = json_decode($request->getContent());
$todo = $app['paris']->getModel('Todo')->find_one($id);
$todo->title = $data->title;
$todo->save();
return new Response('Todo updated', 200);
});
// DELETE /{resource}/{id} Destroy
$app->delete('/api/todos/{id}', function ($id) use ($app) {
$todo = $app['paris']->getModel('Todo')->find_one($id);
$todo->delete();
return new Response('Todo deleted', 200);
});
爲了讓您的骨幹收集上述接口工作,所有你需要做的是設置URL屬性,如:
window.TodoList = Backbone.Collection.extend({
model: Todo,
url: "api/todos",
...
});
最近,我已經寫就怎麼做GET/POST/PUT/Backbone.js的用PHP和DELETE http://cambridgesoftware.co.uk/blog/item/59-backbonejs-%20-php-with-silex-microframework-%20-mysql教程,可能會有所幫助。
如果你從來沒有做過任何PHP,你可能想看看使用'node.js'和['express'](http://expressjs.com/)爲你公開一個REST api 。你也可以設置一個沙發數據庫,它自動公開一個REST API來訪問數據,而不是使用mySQL。 – Raynos 2011-06-08 18:16:54
謝謝雷諾斯的建議,我會研究它。沒有深入瞭解我的情況以及針對這個問題的目的,我們的假設是有一個特定的要求是使用PHP。 – fortuneRice 2011-06-08 18:47:21
你可以看看這個問題:http://stackoverflow.com/questions/5755074/a-restful-persistence-solution-usable-with-backbone-js-in-php/5965699#5965699 – Charles 2011-06-10 13:02:19