【发布时间】:2015-01-29 20:49:20
【问题描述】:
我的routes.php摘录:
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() {
Route::resource('posts', 'PostsController', [
'except' => ['show']
]);
Route::delete('posts/trash', [
'as' => 'posts.trash.empty',
'uses' => 'PostsController@emptyTrash'
]);
});
我的PostsController.php摘录:
/**
* DELETE /admin/posts/{id}
*/
public function destroy($id)
{
// code
}
/**
* DELETE /admin/posts/trash
*/
public function emptyTrash()
{
// code
}
问题在于 Laravel 将 DELETE /admin/posts/trash 请求中的“垃圾”字符串混淆为 {id} 参数。因此,将调用 destroy() 方法而不是 emptyTrash()。为什么以及我可以为此做些什么?
【问题讨论】:
-
尝试更改路线的顺序。将
Route::delete('posts/trash...放在Route::resource...之前 -
是的,它有效。但我想知道为什么以及实际上比仅仅依靠订购更好的方法。也许一个模型绑定或一个 {id} 检查是一个 int?让它成为接受它的完整答案。
标签: php laravel routes laravel-5