【问题标题】:Cakephp 3.x Ajax deleting data gives this Error: Unknown method "isNew"Cakephp 3.x Ajax 删除数据给出了这个错误:未知方法“isNew”
【发布时间】:2015-06-09 17:11:43
【问题描述】:

我尝试在 CakePhp 3.0.6 中使用 Ajax 删除记录。

这是我视图中的 jquery (start.ctp)

<script>
$('.delavailable').click(function(){
    var dataString = 'ID=' + $(this).attr('id');
    $.ajax({
        type: 'POST',
        url: '/ID/admins/delavailable.json',
        data: dataString,
        beforeSend: function(xhr) {
            xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        }
    });
});

控制器(AdminsController.php)

    public function delavailable()
{

    $this->loadModel('TeamFree');

    if($this->request->is('ajax')) {
        $this->TeamFree->delavailable($this->request->data['ID']);
    }
}

模型/表格 (TeamFreeTable.php)

    public function delavailable($id){

         $query = $this->find('all')
        ->select(['TeamFree.ID'])
        ->where(['TeamFree.ID ='=>$id]);

        $this->delete($query);
}

这会返回

{
"message": "Unknown method \u0022isNew\u0022",
"url": "\/ID\/admins\/delavailable.json",
"code": 500

}

我在哪里失败了?

【问题讨论】:

  • 你的问题是什么?你的代码哪里出错了?
  • 它不起作用并返回此错误:错误:未知方法“isNew”

标签: php ajax cakephp cakephp-3.0


【解决方案1】:

您将一个查询对象传递给Table::delete(),它不是这样工作的,该方法需要一个实体,您必须事先获取它。

简化示例

$this->delete($this->get($id));

另见

【讨论】:

  • 感谢您的帮助,我确实让我走上了正轨。随意优化下面的工作示例
【解决方案2】:

感谢 Cookbook 和一些反复试验,这就是我设法通过 Ajax 删除行的方法。

    public function delavailable()
{

    $this->loadModel('TeamFree');

    $teamfree = $this->TeamFree->newEntity(); //create a temporary entity

    if($this->request->is('ajax')) {
        $teamfree = $this->TeamFree->patchEntity($teamfree,$this->request->data); // put the request data into the temp entity
        $this->TeamFree->delete($this->TeamFree->get($teamfree->ID)); //use get() to place the entity property into the delete function and let the delete function refer to the entity
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2014-03-20
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多