【问题标题】:Laravel route with multiple names具有多个名称的 Laravel 路由
【发布时间】: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 并确保列出您想要的所有路线

标签: laravel routes


【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 2015-05-21
      • 2018-10-14
      • 2016-10-12
      • 2018-11-30
      • 2015-07-07
      • 1970-01-01
      相关资源
      最近更新 更多