我正在尝试使用GET而不是DELETE在laravel中删除,因为我的共享服务器不支持DELETE动词。
所以,我使用了Jeffrey Way's method
在我的routes.php中,我使用
Route::resource('users', 'UserController');
例如。
所以,当我使用GET而不是DELETE资源时,系统认为我将使用show方法,而不是使用destroy方法。
我认为这样做的唯一方法就是不使用资源方法来路由和详细说明我的所有路线,但我不喜欢它,它有点沉重的阅读。
是否有任何方法可以继续使用resource()并拥有自定义路由来销毁?
的Tx!
答案 0 :(得分:2)
一种选择是将Route::resource
与except
参数一起使用,并根据需要自定义例外路线。
示例:
Route::resource('product, 'ProductController', ['except' => ['destroy']]);
Route::get('product/{id}/destroy','ProductController@destroy');
Haven尚未找到更好的解决方案。
答案 1 :(得分:0)
HTML表单实际上不支持PUT
,PATCH
或DELETE
操作;它们仅支持GET
或POST
次请求。
相反,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() !!}