我有一个带有两个文本字段和两个按钮(编辑和删除)的表单,当我按下编辑按钮时,它工作正常,但是当我按下删除按钮时,它会给出方法#NotAllowedHttp'例外。我的代码如下:
<form action="/laboratory/doctors/update" method="POST">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<div class="form-group">
<label for="name">Name:</label>
<input type="text" class="form-control" id="name" aria-describedby="name" value="{{ $doctor->name }}">
</div>
<div class="form-group">
<label for="percentage">Percentage:</label>
<input type="text" class="form-control" id="percentage" value="{{ $doctor->percentage }}">
</div>
<button type="submit" class="btn btn-success">Save Changes</button>
<a href="/laboratory/doctors/{{ $doctor->id }}/delete" class="btn btn-danger">Delete</a>
</form>
我的路线如下:
Route::post('/doctors/update', 'DoctorsController@update');
Route::delete('/doctors/{doctor}/delete', 'DoctorsController@destroy');
感谢任何帮助。
答案 0 :(得分:1)
您已将http谓词的路由创建为delete
类型,并尝试获取get
类型。因此,您可以将其更改为get
而不是delete
Route::get('/laboratory/doctors/{doctor}/delete', 'DoctorsController@destroy');
还有其他方法可以将http动词设为DELETE
,但使用
form
代码之外的另一个form
代码。delete
类型答案 1 :(得分:0)
锚点html元素上的Href将导致GET调用,但您的路由期望删除调用。您可以通过某些方法确保删除调用。
最常见的方法之一是使用表单将数据发布到服务器。
删除强>
{{ Form::open(['url' => '/laboratory/doctors/{{ $doctor->id }}/delete', 'method' => 'DELETE']) }}
{{ Form::button('delete', ['type' => 'submit',
'class' => 'btn btn-danger']) }}
{{ Form::close() }}
为了达到最佳效果,我建议只使用{{ Form::open(...) }}
{{ Form::close() }}
一次并重构您的控制器代码,以便它可以从按钮读取值并将其转换为删除的相应{doctor}
中的值发布,所以你的代码中没有多个html表单。
答案 2 :(得分:0)
@if(isset($doctor))
<form action="/laboratory/doctors/{{$doctor->id}}/delete" method="POST">
@else
<form action="/laboratory/doctors/update" method="POST">
@endif
{{ csrf_field() }}
@if(isset($doctor))
{{ method_field('DELETE') }}
@endif
<div class="form-group">
<label for="name">Name:</label>
<input type="text" class="form-control" id="name" aria-describedby="name" value="{{ $doctor->name }}">
</div>
<div class="form-group">
<label for="percentage">Percentage:</label>
<input type="text" class="form-control" id="percentage" value="{{ $doctor->percentage }}">
</div>
<button type="submit" class="btn btn-success">Save Changes</button>
<a href="/laboratory/doctors/{{ $doctor->id }}/delete" class="btn btn-danger">Delete</a>
</form>
问题在于您的操作..当您单击删除按钮时,该按钮运行destroy函数,但表单运行更新功能。因此,您必须分离表单操作,或者可以使用ajax
将其删除