在laravel 5中删除一条记录给了我NotFoundException

时间:2016-12-30 04:26:43

标签: php laravel-5 routes

如何为同一路线创建多个请求,如下所示。

Route.php

Route::get('/home', 'HomeController@index');//->middleware('auth');
Route::get('/home/{$user}','HomeController@showStudent');
Route::delete('/home/{$studentId}','HomeController@deleteStudent');

表单工作正常,直到我添加了删除请求。在我的刀片模板中,我有类似的代码。

home.blade.php

  <form class="" role="form" method="DELETE" action="/home/{{$student->id}}">
                            {{ csrf_field() }}
                            <td><button type="submit" class="btn btn-primary pull-right">Remove Student</button></td>
                            </form>

我相信由于它显示NotFoundHTTPException的相同路线。

在一条路线上/我试图添加,显示,编辑和删除带有不同按钮的记录。

先谢谢。

3 个答案:

答案 0 :(得分:1)

您可以添加表单并使用Laravel的Form Method Spoofing

<input type="hidden" name="_method" value="DELETE">

在此处查看更多内容... http://laravel.com/docs/master/routing#form-method-spoofing

尝试如下....

 <form class="" role="form" method="DELETE" action="/home/{{$student->id}}">
 <input type="hidden" name="_method" value="DELETE">
<input type="hidden" name="_token" value="{{ csrf_token() }}">           
 <td><button type="submit" class="btn btn-primary pull-right">Remove Student</button></td>
 </form>

答案 1 :(得分:0)

1)改变您的路线:

Route::delete('/home/{$studentId}','HomeController@deleteStudent');

要:

Route::get('/delete/{$Id}','HomeController@deleteStudent')->name('delete');

2)改变你的表格标签:

<form class="" role="form" method="DELETE" action="/home/{{$student->id}}">

要:

<form class="" role="form" method="get" action="route('delete', ['id' => $student->id])">

答案 2 :(得分:-1)

HTML表单不支持getpost以外的方法。如果您需要模拟它,请包含一个隐藏的输入来模拟delete

<input name="_method" type="hidden" value="DELETE">

然后在您的代码中,将其更新为:

<form class="" role="form" method="POST" action="/home/{{$student->id}}">
    {{ csrf_field() }}
    <input name="_method" type="hidden" value="DELETE">
    <td><button type="submit" class="btn btn-primary pull-right">Remove Student</button></td>
</form>

参考: