我关注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("Are You Sure?")) { return true; } return false;">Delete</a>
答案 0 :(得分:1)
问题是,您的请求是GET
而不是DELETE
。因此,您应该使用AJAX
并定义您的请求类型:
$.ajax({
type : 'DELETE',
data : 'post_id=' + post_id,
success : function (response) {
console.log(response);
}
})
这段代码可能有所帮助。如果不是 - 只需使用GET
请求删除,因为POST
请求通常用于添加数据。
或者您应该提供将要检入Middleware的令牌哈希值。