简单的PHP代码示例,以服务backbone.js

时间:2011-06-08 17:54:35

标签: php backbone.js

经验等级:新手。

backbone.js Todos demo使用localStorage。这个问题是关于如何使用PHP来代替服务页面,假设已经设置了MySQL数据库。

我查看了PHP框架,例如CodeIgniter,但发现它们难以理解,并且可能因为我的学习目的而过度使用。

我理解需要设置REST API的概念。我真的在寻找简单的代码示例。提前谢谢。

更新:是否有完整的backbone.js教程,其中包含如何连接到服务器端PHP的完整工作示例?

3 个答案:

答案 0 :(得分:8)

应该帮助您入门的最基本,最简单的方法(我知道)将是:

  1. 鉴于您有模型/集合,请使用以下网址定义:

    resourceCollection:Backbone.Collection.extend({        url:'/ page.php'     })

  2. 创建 page.php 文件(在文档根目录中),只需处理您可能使用的RewriteRules等!

  3. 现在我们必须确保我们能够对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"