【发布时间】:2016-04-12 17:48:10
【问题描述】:
在 laravel routes.php 文件中,我有以下代码:
// User Resourceful Routing
Route::resource('user','UserController');
默认情况下delete 路由转到UserController 的show 方法。为了克服这个问题,我在 laravel routes.php 中写了这条路线:
// Delete Users Route
Route::get('user/{user}/{flag}', ['uses' => 'UserController@destroy', 'as'=>'user.destroy'])->before('permission:user_delete');
它仍然对我有用,但有时(十分之二)它会转到 UserController 的 show 方法而不是 destroy 方法。
// Destroy method
public function destroy($id,$flag='normal'){
}
我们非常感谢您的建议。
【问题讨论】:
-
使用资源控制器时,必须使用正确的HTTP方法,例如
GET、POST、DELETE。如果你没有在请求中指定DELETE方法,Laravel 会认为你正在使用GET方法,并会调用show()而不是destroy()。 -
@MikeRockett:我知道这一点,但您可以通过 API 选择删除方法,但浏览器没有删除方法。当您通过浏览器发出请求时,就会出现此问题。
-
这种情况只是偶尔发生。其他时候对我来说效果很好。
-
您必须使用带有隐藏 _method=delete 和 method=post 的表单,通过网络浏览器通过方法欺骗发送删除请求。
-
lagbox 是正确的,如果您不使用 AJAX,则方法欺骗是可行的方法。
标签: laravel laravel-4 laravel-routing