这是我的表格:
<form action="{{ route('invoice.destroy' , $invoice->id)}}" method="DELETE">
<div class="modal-footer no-border">
<button type="button" class="btn btn-info" data-dismiss="modal">No</button>
<button type="submit" class="btn btn-primary">Yes</button>
<input type="hidden" name="_method" value="DELETE" />
</div>
</form>
这是我的控制器:
public function destroy($id)
{
$invoice = Invoice::find($id);
if(!$invoice){
return redirect()->route('invoice.index')->with(['fail' => 'Page not found !']);
}
$invoice->delete();
return redirect()->route('invoice.index')->with(['success' => 'Invoice Deleted.']);
}
但它无法删除问题在哪里?怎么解决这个?
答案 0 :(得分:7)
您需要对表单使用POST
方法,并添加名称为input
的{{1}}元素和值_method
。另外,添加令牌:
DELETE
答案 1 :(得分:1)
我认为您必须在表单中添加一个隐藏的输入,其中包含使用的方法:
<form action="{{ route('invoice.destroy' , $invoice->id)}}" method="POST">
<input type="hidden" name="_method" value="DELETE" />
</form>
的Laravel文档的更多信息
答案 2 :(得分:0)
要使PUT
和DELETE
方法有效,您需要一个额外的字段,因为在HTML中只能使用POST
和GET
(不属于开箱)。
附加字段将使用代码:
{!! method_field('DELETE') !!}
所以你的表格看起来像这样:
<form action="{{ route('invoice.destroy' , $invoice->id)}}" method="DELETE">
{!! method_field('DELETE') !!}
<div class="modal-footer no-border">
<button type="button" class="btn btn-info" data-dismiss="modal">No</button>
<button type="submit" class="btn btn-primary">Yes</button>
</div>
</form>
答案 3 :(得分:0)
此外,如果您正在使用刀片模板,则可以添加method字段,如下所示: @method('DELETE')
答案 4 :(得分:0)
更多Laravel方法,您可以做到
<form action="{{ route('invoice.destroy',$invoice->id)}}" method="POST">
@method('DELETE')
<button type="submit" class="btn btn-primary">Yes</button>
</form>