Laravel 重复的路线名称
Posted
技术标签:
【中文标题】Laravel 重复的路线名称【英文标题】:Laravel Duplicate Route names 【发布时间】:2021-08-06 09:21:05 【问题描述】:我对路由中的 get 和 post 方法使用相同的路由名称。这些路线用于相同目的。 例如:我正在调用使用 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 重复的路线名称的主要内容,如果未能解决你的问题,请参考以下文章