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

时间:2015-11-17 01:20:53

标签: php laravel-5.1 laravel-routing

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

所以,我使用了Jeffrey Way's method

在我的routes.php中,我使用

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

例如。

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

我认为这样做的唯一方法就是不使用资源方法来路由和详细说明我的所有路线,但我不喜欢它,它有点沉重的阅读。

是否有任何方法可以继续使用resource()并拥有自定义路由来销毁?

的Tx!

2 个答案:

答案 0 :(得分:2)

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

示例:

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

Haven尚未找到更好的解决方案。

答案 1 :(得分:0)

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() !!}