$ this-> request-> allowMethod([' post',' delete'])不允许的方法;

时间:2015-05-12 12:13:39

标签: cakephp cakephp-3.0

我关注this tutroial,除了删除文章外,一切正常。当我调用delete方法时:

public function delete($id)
    {
        $this->request->allowMethod(['post', 'delete']);

        $job = $this->Jobs->get($id);
        if ($this->Jobs->delete($job)) {
            $this->Flash->success(__('Job: {0} has been deleted.', h($job->name)));
            return $this->redirect(['action' => 'index']);
        }
    }

我有这个错误:

  

不允许的方法:$ this-> request-> allowMethod([' post',' delete']);

但是如果我从我的方法中删除这一行,它就可以了:

$this->request->allowMethod(['post', 'delete']);

所以我做错了什么,以及我错过了什么,为什么在本教程中它与此有关,但在我的情况下它并没有。我还应该允许什么吗?

  

这是动作的PHP代码:

echo $this->Html->link('Delete',    array('controller' => 'Jobs','action' => 'delete', $job->id),
                                    array('confirm' => 'Are You Sure?','class' => 'button red'));
  

以下是操作的HTML代码:

<a href="/jobsfind/jobs/delete/32" class="button red" onclick="if (confirm(&quot;Are You Sure?&quot;)) { return true; } return false;">Delete</a>

1 个答案:

答案 0 :(得分:1)

问题是,您的请求是GET而不是DELETE。因此,您应该使用AJAX并定义您的请求类型:

$.ajax({
  type : 'DELETE',
  data : 'post_id=' + post_id,
  success : function (response) {
    console.log(response);
  }
})

这段代码可能有所帮助。如果不是 - 只需使用GET请求删除,因为POST请求通常用于添加数据。

或者您应该提供将要检入Middleware的令牌哈希值。