具有多个名称的 Laravel 路由
Posted
技术标签:
【中文标题】具有多个名称的 Laravel 路由【英文标题】:Laravel route with multiple names 【发布时间】:2019-03-07 03:49:29 【问题描述】:我不能在一条路线上有两个名字吗? 如下所示:
Route::get('/', 'Admin\HomeController@index')->name(['admin.home', 'planner.home.index']);
谢谢!
【问题讨论】:
你需要有2条相同的路线,按名称区分 你的意思是:Route::get('xxx')->name('admin.home'); Route::get('xxx')->name('planner.home.index'); 是的,没错。 我试过了,但它显示找不到 admin.home 路由。也许它被覆盖了。 尝试运行php artisan route:list
并确保列出您想要的所有路线
【参考方案1】:
这仅在您需要名称而不是 URL 时才有效,尽管它很棘手且草率。
Route::get('/', 'Admin\HomeController@index')->name('admin.home');
Route::get('/2', function()
return redirect()->route('admin.home')
)->name('planner.home.index');
因此,如果您使用route('admin.home')
或route('planner.home.index')
,它会将您重定向到HomeController
中的index
方法。
【讨论】:
有了这个答案,您将拥有两条不同的路线,/
和/2
。提出的问题是如何使用两个名称拥有相同的路线。
正如我所说,这有点棘手和草率。但结果是,当你想在你的刀片中使用路由名称时,你使用的每一个,它都会返回一个相同的结果。
即使你最终在同一个位置,结果肯定不一样。【参考方案2】:
如果您希望在同一个应用中拥有 2 个版本(路线名称),您可以这样做。
<?php
$routes = ['v1' => 'app.name1.', 'v2' => 'app.name2.'];
foreach ($routes as $routeVersion => $routeName)
// Yours router app (i.e app/v1/pages or app/v2/pages)
// Your router name (i.e app.name1 or app.name2)
Route::prefix('app' . $routeVersion)
->middleware('auth')
->name($routeName)
->group(function()
# Your custom routes
...
?>
这是路由列表中的响应示例
希望对你有帮助!
【讨论】:
【参考方案3】:foreach($pages as $key => $page)
Route::any("/".$page, "Controller@index")->name($page);
【讨论】:
以上是关于具有多个名称的 Laravel 路由的主要内容,如果未能解决你的问题,请参考以下文章