Laravel 重复的路线名称

Posted

技术标签:

【中文标题】Laravel 重复的路线名称【英文标题】:Laravel Duplicate Route names 【发布时间】:2021-08-06 09:21:05 【问题描述】:

我对路由中的 getpost 方法使用相同的路由名称。这些路线用于相同目的。 例如:我正在调用使用 get 路由

加载添加视图表单

Route::get('add', 'UserController@addView')->name('user.add'); 那么,

我正在调用以使用 post 路由

以该形式存储数据

Route::post('add', 'UserController@store')->name('user.add');

有什么问题吗,如果我像这样使用相同的路由名称?

【问题讨论】:

这能回答你的问题吗? How to route GET and POST for same pattern in Laravel? 【参考方案1】:

不,您不能像documentation 中所述为两条不同的路线使用相同的名称,如果您确实需要命名路线,您应该寻找不同的名称,但如果不需要命名路线,您可以让每个 url 都有它的方法,比如:

Route::get('/your-url', 'App\Http\Controllers\UserController@addView');
Route::post('/your-url', 'App\Http\Controllers\UserController@store');

如果您正在制作 CRUD,您可以:

Route::resource('user', UserController::class);

这将创建 CRUD 所需的所有 url:

【讨论】:

但是,如果我没有为 2 个 get 方法使用相同的路由名称。一个用于post,另一个用于get。它不会返回任何错误。有技术问题吗? 我没有任何错误。如果这在技术上是错误的,原因是什么? @Thisaru 也许你没有使用命名?正如 Abdullah Shakir 在其对同一问题的回复中所评论的那样,如果您尝试按其名称使用该路线,则会导致错误或不良行为。不过,这是一种不好的做法,我建议您遵循文档【参考方案2】:

实际上,两条路线的名称相同,即name('user.add')。改变它。

【讨论】:

我没有收到任何错误。我问这是技术上的错误..?如果错了是什么原因? 路由名称应该始终是唯一的。尝试重定向return redirect()->route('user.add'); 看看会发生什么

以上是关于Laravel 重复的路线名称的主要内容,如果未能解决你的问题,请参考以下文章

Laravel路线中包含文件夹名称

Laravel 5.1-5.8 中以前的路线名称

如何编写工匠命令以在 Laravel 中搜索特定路线名称

Laravel:我如何获得当前路线

具有多个名称的 Laravel 路由

Laravel中缺少路由所需的参数[重复]