这是我在我看来的表格
{!! Form::open(['url' => ['documents/{file}/{id}', $file->name, $file->id],'method' => 'delete']) !!}
{!! Form::token() !!}
{!! Form::submit('Delete') !!}
{!! Form::close() !!}
我从数据库和原始文件中删除文件的控制器
public function destroyFile($file_name, $id)
{
File::findOrFail($id)->delete();
$file_path = storage_path('documents').'/'.$file_name;
$destinationPath = $file_path; File::delete($file_path);
return redirect('/documents');
}
这是路线
Route::delete('documents/{file}/{id}','FilesController@destroyFile');
当我按下提交按钮时,我得到NotFoundHttpException
答案 0 :(得分:2)
尝试使用此
print
实际上,他们的答案是正确的。你需要_method是DELETE。当我使用它时。 Laravel为我做。
或者你可以把它放在你的表格上
{!! Form::open(['method' => 'DELETE', 'action' => ['FilesController@destroyFile', $file->name, $file->id] ]) !!}
或
<input type="hidden" name="_method" value="DELETE">
答案 1 :(得分:0)
在大多数浏览器中,无法将这种方法与html表单一起使用,大多数只支持GET
和POST
。
所以这个请求不起作用的原因是浏览器将此作为GET请求发送,这是默认设置。
GET
,POST
,PUT
和DELETE
。
答案 2 :(得分:0)
在表单中添加{{ method_field('DELETE') }}
。
{!! Form::open(['url' => ['documents/{file}/{id}', $file->name, $file->id],'method' => 'delete']) !!}
{{ method_field('DELETE') }}
{!! Form::token() !!}
{!! Form::submit('Delete') !!}
{!! Form::close() !!}
答案 3 :(得分:0)
原因是HTML表单不支持PUT,PATCH,DELETE操作。基本上你需要像这里描述的那样欺骗它们。 https://laravel.com/docs/5.2/routing#form-method-spoofing