Laravel模型绑定不适用于删除

时间:2015-12-24 10:29:06

标签: laravel laravel-5

我问了一个非常基本的问题,我搜索了两个多小时,但我还是无法修复它。我是laravel的新手,并试图阅读他们的任务示例。但有些删除如何工作。 以下是我的路线代码:

Route::delete('/task/{task}', function(\AltafBlog\Task $task) {
     $task->delete();
     return redirect('/');
});

以下是我的删除表格:

<form action="{{url('/task', [$task->id])}}" method="post">
   {{csrf_field()}}
   {{method_field('DELETE')}}
   <button class="btn btn-danger">Delete</button>
</form>

现在当我点击删除按钮时,它不会删除表格中的项目。此外,我没有收到任何错误消息。添加新项目并列出它们工作正常。 我不确定我做错了什么。有人能说出那里发生了什么吗?

更新:更新到laravel 5.2后,模型绑定正在运行,但验证程序在后期路由中不起作用。邮政路线如下:

Route::post('/task', function(Request $request) {
$validator = Validator::make($request->all(), [
    'title'  =>  'required|max:255',
]);
if($validator->fails())
{
    return redirect('/')->withInput()->withErrors($validator);
}
    $task = new Task();
    $task->title = $request->title;
    $task->active = 1;
    $task->save();
    return redirect('/');
});

谢谢

3 个答案:

答案 0 :(得分:1)

我相信可能会有几个原因导致它无法正常工作。

首先,当你的参数$ task-id被拉过你的路线时,它将是变量$ task。然后,您将使用任务实例覆盖此变量。然后,您正在运行delete方法,它不会抛出错误。尝试将您的代码更改为以下

您的路线

Route::delete('/task/{taskID}', function(\AltafBlog\Task $task, $taskID) {
    $task->find($taskID);
    $task->delete();
    return redirect('/');
});

答案 1 :(得分:1)

Laravel版本中的问题。 Laravel 5.1.24没有隐式绑定。

因此,如果您想使用它,您应该使用(或升级)Laravel 5.2。* Upgrading To 5.2.0 From 5.1

答案 2 :(得分:0)

无需在->all()之后添加$request

您的代码应如下所示:

$validator = Validator::make($request, [
    'title'  =>  'required|max:255',
]);

或者你可以试试这个:

$this->validate($request, [
    'title'  =>  'required|max:255',
]);
相关问题