DELETE动词在Yii Rest Api中不起作用?

时间:2014-01-04 07:36:50

标签: php rest yii

尝试使用Yii Rest api

删除记录时

HTTP DELETE mothod无法正常工作

我的网址路由

array('users/list', 'pattern'=>'users/<model:\w+>/<id:\d+>', 'verb'=>'DELETE'), 

当我要求时

http://localhost/api/users/delete?id=1

在休息客户端

中的DELETE方法中

它说there is no method like delete

所以我创建了一个类似下面的动作

public function actionDelete()
    {


        switch($_GET['action'])
        {
        case 'delete': // {{{
                $id = $_GET['id'];
                $this->DeleteUser($id);
                break; // }}}
            default:
                    break;
        }
}

现在它说未定义索引:模型

我的理解是,如果我们使用HTTP DELETE方法,我们应该有一个名为actionDelete的动作吗?

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

动词=&gt; &#39; DELETE&#39;表示请求方法是删除。

您应该可以使用以下javascript调用您的API:

$.ajax({
    url: 'index.php/api/users/1',
    type: 'DELETE',
    async: false,
    success: function(result) {
      alert('Deleted');
    },
    error: function(result) {
      alert('Could not delete!');
    }
});

您是否有标准过滤器有效?如果是,您应该删除&#34; postOnly + delete&#34;。

/**
 * @return array action filters
 */
public function filters()
{
    return array(
        'accessControl', // perform access control for CRUD operations
        'postOnly + delete', // we only allow deletion via POST request
    );
}