经验等级:新手。
backbone.js Todos demo使用localStorage。这个问题是关于如何使用PHP来代替服务页面,假设已经设置了MySQL数据库。
我查看了PHP框架,例如CodeIgniter,但发现它们难以理解,并且可能因为我的学习目的而过度使用。
我理解需要设置REST API的概念。我真的在寻找简单的代码示例。提前谢谢。
更新:是否有完整的backbone.js教程,其中包含如何连接到服务器端PHP的完整工作示例?
答案 0 :(得分:8)
应该帮助您入门的最基本,最简单的方法(我知道)将是:
鉴于您有模型/集合,请使用以下网址定义:
resourceCollection:Backbone.Collection.extend({ url:'/ page.php' })
创建 page.php 文件(在文档根目录中),只需处理您可能使用的RewriteRules等!
现在我们必须确保我们能够对get,put,post和delete做出正确的反应;所以我们必须检查请求方法,例如带有switch语句。案例将是GET,DELETE,PUT,POST:
开关(的 $ _ SERVER [ 'REQUEST_METHOD'] 强>){ ... }
答案 1 :(得分:4)
以下内容应该给你一个想法(php控制器是使用Silex框架+ Paris库实现的,用于数据访问):
// 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",
...
});
最近,我编写了一个关于如何使用Backbone.js和PHP http://cambridgesoftware.co.uk/blog/item/59-backbonejs-%20-php-with-silex-microframework-%20-mysql进行GET / POST / PUT / DELETE的教程,可能会有所帮助。
答案 2 :(得分:1)
示例: https://github.com/ccoenraets/wine-cellar-php
...来自这篇文章:
http://coenraets.org/blog/2011/12/restful-services-with-jquery-php-and-the-slim-framework/
...很好,因为它封装了一个配置好的PHP RESTful服务器(Slim)。从使用backbone.js的角度来看,这似乎基本上是服务器端所需的全部内容 - 只是一个RESTful服务!
对于我的基本网络配置(对重写规则不好),我不得不修改文件../final/js/models/winemodel.js(我添加了 index.php )如下:
url:"../api/index.php/wines"