繁体   English   中英

在laravel / mysql中单击删除按钮后,无法删除该行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM