Backbone.js如何与PHP一起使用


Backbone.js How to use with PHP

我一直在研究backbone.js,似乎不知道如何让它与php通信以保存模型数据。它发送一个请求,但我如何捕获该请求,无论是"创建"、"更新"、"读取"、"删除"等。

感谢

您可以考虑的另一个选项是使用预打包的RESTful框架,该框架内置了执行主干服务器查询所需的所有功能。我个人最喜欢的是Josh Lockhart的SlimPHP框架。

一些简单的示例代码(一旦您设置了SlimPHP)用于进行Backbone调用,如下所示。

$app->get('/user', function() use ($app) {
    // See if session is set, get user info as array
    if (isset($_SESSION['userID']) {
         $user = // grab user with userID data from DB
    }
    // Respond to the get request with a json object
    $response = $app->response;
    $response['Content-Type'] = 'application/json';
    $response->body(json_encode($user));
}

下面是一个POST示例,它将Backbone json转换为数组。

// Middleware that detects type of data and converts it to something usable
$app->add('Slim_Middleware_ContentTypes');    // JSON to associative array
...
$app->post('/message', function() use ($app) {
    $dataIn = $app->request()->getBody();
    ...
    // Save to DB $dataIn['message'], $dataIn['author'], etc.
}

下面是一个使用一些参数的PUT示例。

$app->put('/user/:id', function($id) use ($app) {
    // Find appropriate user from DB that has $id as ID
    $dataIn = $app->request()->getBody();
    // Save to DB $dataIn['name'], $dataIn['age'], etc.
}

这是一个DELETE。

$app->delete('/message/:id', function($id) use ($app) {
    // Find appropriate message from DB that has $id as ID
    // Delete message with id of $id
}

虽然这并不是一个需要考虑的所有其他事情的详尽例子,但它应该让你了解已经有哪些开放解决方案可以供你使用。我个人喜欢Slim,因为它重量轻、简单,但它拥有RESTful服务器中所需的所有功能。非常适合原型设计。将它与DB抽象层和一些其他工具相结合,您可以更快地制作任何您想要的东西。

你可以在这里看到一些其他的示例代码:

  1. 如何将骨干模型发布到服务器
  2. 保存主干数据的方法

这里有一个链接到其他一些基于PHP的RESTful解决方案:框架列表

backbone.js的模型使用特定的url来获取和发送数据。你必须确保,有一个php脚本调用那里。

现在有两种可能性。

首先,将该方法作为附加变量发送到$_POST内部。其次,您必须查找使用$_SERVER['REQUEST_METHOD'] 可以使用的请求方法(GET、POST、PUT、DELETE)

现在,您可以使用简单的if-else或switch语句来处理请求并传递所需的数据,就像我认为的json一样。

$GLOBALS['HTTP_RAW_POST_DATA']对我来说很好,我不知道print_r($_POST)不打印anithing是什么原因!!

在您的php脚本中,PUT和DELETE方法都有这个,因为您可以使用:$_SERVER['REQUEST_METHOD'] 过滤这些方法

parse_str(file_get_contents("php://input"),$post_vars);

如果请求是POST或GET,您可以正常使用它,但如果请求是PUT或DELETE,请使用上面的行,这样您就可以使用:访问vars

$post_vars['fruit'] for example...

当你准备好回答主干时,你只需要首先制作正确的标题:

header('Content-type: application/json; charset=utf-8');

并用json:对您的答案进行编码

echo json_encode(array("message"=>"missing fields","status"=>200));