使用 Route::resource() 在 laravel 中删除并获取

delete in laravel with get using Route::resource()

我正在尝试使用 GET 而不是 DELETE 在 laravel 中删除,因为我的共享服务器不支持 DELETE 动词。

所以,我用了Jeffrey Way's method

东西在我的routes.php,我用

 Route::resource('users', 'UserController');

例如

因此,当我对资源使用 GET 而不是 DELETE 时,系统认为我将使用 show 方法而不是 destroy 方法。

我看到的唯一方法是不使用资源方法来路由,并详细说明我的所有路由,但我不喜欢它,读起来有点沉重。

有没有办法继续使用 resource() 并有自定义的销毁路径?

Tx!

HTML 表单实际上不支持 PUTPATCHDELETE 操作;他们只支持 GETPOST 请求。

相反,Laravel 欺骗该方法以允许您使用隐藏的 _method 字段来使用这些方法,您可以在 docs.

中阅读该字段

使用 Route::resource 会自动将 DELETE 方法路由到控制器中的 destroy 函数。

如果您正在使用 Form helpers,那么您可以在 Form::open() 中使用以下内容来指定删除方法:

{!! Form::open(['method' => 'DELETE']) !!}

如果你不是,那么你可以像这样简单地将它包含在你的 HTML 表单中 {{ method_field('DELETE') }}

如果您不欺骗它并使用 GET 请求,那么 Route::resource 会将其与您控制器中的 show 函数相关联。

使用按钮完成此操作

{!! Form::open(['method' => 'DELETE']) !!}
{!! Form::submit('Delete') !!}
{!! Form::close() !!}

一种选择是将 Route::resourceexcept 参数一起使用,并根据需要自定义例外路由。

示例:

Route::resource('product, 'ProductController', ['except' => ['destroy']]); Route::get('product/{id}/destroy','ProductController@destroy');

还没有找到更好的解决方案。