问题与DELETE方法 - PHP slim框架

时间:2014-03-01 06:09:13

标签: php slim

我有DELETE方法的问题。下面是代码,我得到了404 error DELETE方法。如果我使用get方法而不是delete,则代码执行正常。我帮我错了。

<?php
require "Slim/Slim.php";
require "NotORM/NotORM.php";
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();

$pdo = new PDO('mysql:host=localhost;dbname=rest_trial', 'uname', 'passwd');
$db = new NotORM($pdo);

//DELETE method
$app->delete("/deletebook/:id", function ($id) use($app, $db) {
//$app->get("/deletebook/:id", function ($id) use($app, $db) {
$app->response()->header("Content-Type", "application/json");
$book = $db->books()->where("id", $id);
if ($book->fetch()) {
    $result = $book->delete();
    echo "Book deleted successfully";
}
else{
    echo "Book id $id does not exist";
}
});
$app->run();

1 个答案:

答案 0 :(得分:4)

如果查看浏览器控制台的网络标签,可以检查请求的方法是否为DELETE

某些浏览器不支持PUTDELETE http请求方法。 Slim提供了一种方法:

不幸的是,现代浏览器不提供对HTTP DELETE请求的本机支持。要解决此限制,请确保HTML表单的方法属性为”post“,然后将方法覆盖参数添加到HTML表单中,如下所示:

<form action="/books/1" method="post">
    ... other form fields here...
    <input type="hidden" name="_METHOD" value="DELETE"/>
    <input type="submit" value="Delete Book"/>
</form>

如果您使用的是Backbone.js或命令行HTTP客户端,您还可以使用X-HTTP-Method-Override标头覆盖HTTP方法。