[英]Unable to delete the row, upon clicking the delete button in laravel/mysql
我一直在研究一个示例,该示例从头开始给出:“ https://laravel.com/docs/5.1/quickstart ”。 单击删除按钮后,我无法删除该行!
Web / Route.php
Route::get('/', 'TaskDisplayController@taskdisplay');
Route::post('/taskdisplay', function () {
return view('/taskdisplay');
});
Route::get('/taskdisplay', function () {
return view('/taskdisplay');
});
Route::post('/tasklistdisplay', 'TaskDisplayController@tasklistdisplay');
Route::get('/tasklistdisplay', 'TaskDisplayController@tasklistdisplay');
Route::post('/TaskDisplay', 'TaskDisplayController@taskdisplay');
Route::get('/TaskDisplay', 'TaskDisplayController@taskdisplay');
Route::delete('/tasklistdisplay/{id}', function ($id) {
DB::table('tasktable')->findOrFail($id)->delete();
return redirect('/');
});
TaskDisplayController.php
class TaskDisplayController extends BaseController
{
public function taskdisplay()
{
$task_ = DB::table('tasktable')->select('task','taskid','id')->get();
return view('taskdisplay',['task'=> $task_]);
}
public function tasklistdisplay(Request $req)
{
$task_=$req->input('taskfield');
if(DB::insert('insert into tasktable (id, task) values (1, ?)',[$task_]))
{
return redirect('/TaskDisplay');
}
else
{
echo "Login failed; Wrong data entered";
}
}
}
taskdisplay.blade.php
<table>
<thead>
<tr>
<th>Task ID</th>
<th>User ID</th>
<th>Task</th>
<th>Options</th>
</tr>
</thead>
<tbody>
<tr>
@foreach($task as $tsk)
<td>{{$tsk->taskid }}</td>
<td>{{$tsk->id }}</td>
<td>{{$tsk->task }}</td>
<td>
<form action="/task/{{ $tsk->id }}" method="post" >
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button>Delete Task</button>
</form>
</td>
</tr>
@endforeach
<input type="hidden" value={{csrf_token()}} name=_token>
</tbody>
</table>
期望它像: https : //laravel.com/docs/5.1/quickstart一样工作,但是在单击删除按钮404时,找不到页面
我假设您要转到的路线是tasklistdisplay
(因为它是您显示的唯一delete
路线),但是,在表单中,您已将操作设置为"/task/{{ $tsk->id }}"
。
尝试将操作更改为:
action="/tasklistdisplay/{{ $tsk->id }}"
请以以下格式修改您的帖子网址:您的路线是:
Route::delete('/tasklistdisplay/{id}'
但您的形式是:
<form action="/task/{{ $tsk->id }}" method="post" >
它应该是 :
<form action="/tasklistdisplay/{{ $tsk->id }}" method="post" >
点击进入404,因为您的web / route.php中没有DELETE路由。
您正在调用的删除路由在form
标签的action
属性中定义。
这条路线
Route::delete('/tasklistdisplay/{id}', function ($id) {
DB::table('tasktable')->findOrFail($id)->delete();
return redirect('/');
});
应该
Route::delete('/task/{id}', function ($id) {
DB::table('tasktable')->findOrFail($id)->delete();
return redirect('/');
});
调整动作路线,如下所示:
action="/tasklistdisplay/{{ $tsk->id }}"
findOrFail
是一个雄辩的函数,不是Query Builder
。 因此应该是:
DB::table('tasktable')->whereId($id)->delete();
DB::table('tasktable')->delete(1)
这将DB::table('tasktable')->delete(1)
帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.