我有一个类别页面,并创建一个删除按钮以将其删除类别,图像如下:
所以问题出在给我看' MethodNotAllowedHttpException '
好的。这是路线文件
Route::delete('removeCategory/{id}','AdminController@removeCategory');
控制器文件
public function removeCategory(Request $id){
$cats = cats::find($id);
$cats->delete();
}
和查看文件
@foreach($data as $product)
<tr style="height:50px">
<td style="padding:10px">{{$product->cat_name}}</td>
<td><a class="btn btn-sm btn-fill btn-primary"
href="{{url('/admin/editCategory')}}/{{$product->id}}">Edit</a></td>
<td><a href="{{url('admin/removeCategory')}}/{{$product->id}}" onclick="return confirm('Are you sure?')"
class="btn btn-sm btn-fill btn-primary">Remove</a></td>
</tr>
@endforeach
答案 0 :(得分:7)
MethodNotAllowedHttpException
告诉我们,我们尝试使用该端点不支持的http方法类型请求服务器。例如,您尝试对仅允许GET
的URL发出DELETE
请求。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405
答案 1 :(得分:7)
由于您希望这样做而不会使代码与ajax复杂,所以
解决方案只是发送POST
请求并将DELETE
方法定义为隐藏字段。
为简单起见,您可以使用method_field helper添加该字段:
@foreach($data as $product)
<tr style="height:50px">
<td style="padding:10px">{{$product->cat_name}}</td>
<td><a class="btn btn-sm btn-fill btn-primary"
href="{{url('/admin/editCategory')}}/{{$product->id}}">Edit</a></td>
<td>
<form
method="post"
action="{{url(''admin/removeCategory')}}/{{$product->id}}">
{!! Form::token() !!}
{{ method_field('DELETE') }}
<button
type="submit"
onclick="return confirm('Are you sure?')"
class="btn btn-sm btn-fill btn-primary">Remove</button>
</form>
</td>
</tr>
@endforeach
,并确保删除对象后它返回到列表:
public function removeCategory($id) {
$Cat = cats::find($id);
if ($Cat) {
$Cat->delete();
}
return redirect()->back();
}
答案 2 :(得分:1)
尝试编辑您的路线:
Route::get('removeCategory/{id}','AdminController@removeCategory');
然后将您的控制器编辑为此:
public function removeCategory($id){
$cats = cats::find($id);
$cats->delete();
return response(['Message' => 'This request has been deleted'], 200);
}
这是上面提供的答案的替代方法,尽管我建议坚持使用num8er提供的答案。
答案 3 :(得分:1)
您必须提交DELETE请求。查看num8er的答案。您不必通过表单进行操作,可以通过AJAX进行操作,但是仅使用<a href
就会产生GET请求。
您还将在控制器方法中键入提示$id
作为Request对象。
因此,Laravel将为您提供一个Request对象,而不是URL中作为参数传递的数字。您需要删除该参数上的类型提示,或使用实际适合的类型:
public function removeCategory($id) {
}