Laravel - 命名路由(获取、发布、删除)同名


Laravel - Naming routes (GET, POST, DELETE) the same name?

为了让我在一个巨大的网站中的生活更简单,我可以这样做吗?

Route::get('view/{id}', 'PostController@show')->name('post');
Route::delete('view/{id}', 'PostController@delete')->name('post');
Route::post('view/{id}', 'PostController@save')->name('post');

然后以我的形式,我可以做到这一点。

<!-- Delete Form -->
<form method="post" action="{{ route('post', $post->id) }}">
    <input type="hidden" name="_method" value="DELETE">
    <button type="submit">Delete</button>
</form>
<!-- Edit Form -->
<form method="post" action="{{ route('post', $post->id) }}">
    <input type="hidden" name="_method" value="PATCH">
    <button type="submit">Edit</button>
</form>
<!-- Etc -->

我可以这样做吗?这是推荐的吗?

是的,实际上您可以使用以下内容来保持路由文件干净: https://laravel.com/docs/5.2/controllers#restful-naming-resource-route-parameters

Route::resource('foobar', 'FooBarController');

这将为您自动生成 RESTful 路由:

如果运行php artisan route:list则可以看到所有 HTTP 路由。