【问题标题】:Two route variables with the same start URL in Laravel 8Laravel 8 中具有相同起始 URL 的两个路由变量
【发布时间】:2021-05-04 09:46:43
【问题描述】:

是否可能有两个变量和相同的 URL 开头?
我的意思是 'turnaje/{tournament}''turnaje/{region}'

Route::get('/turnaje', [TournamentController::class, 'index']);
Route::get('/turnaje/pridat', [TournamentController::class, 'create'])
    ->middleware('auth');
Route::get('/turnaj/{tournament}', [TournamentController::class, 'show']);
Route::get('/turnaje/{region}', [TournamentController::class, 'show_region']);

Route::resource('turnaje', TournamentController::class)
    ->parameters(['tournaments' => 'tournaments:slug'])
    ->except(['index', 'show', 'choose', 'create'])
    ->middleware('auth');

【问题讨论】:

  • 不,两条路线不能有相同的模式。路由器如何知道选择两者中的哪一个?

标签: php laravel routes laravel-8 laravel-controller


【解决方案1】:

这可以通过两种方式实现

如果参数可以通过https://laravel.com/docs/8.x/routing#parameters-regular-expression-constraints 解析(一个有数字 id,第二个有 slug 等)

或创建由所需参数解析的共享控制器

  • 在区域中查找
  • 如果找不到,请在锦标赛中找到
  • 不能使用隐式绑定,必须使用字符串

但我建议完全按照路由 /{region}/turnaje 拆分它

【讨论】:

    【解决方案2】:

    不,不可能,因为 Laravel 糊涂之后,不知道你想要什么。

    【讨论】:

      猜你喜欢
      • 2021-08-05
      • 1970-01-01
      • 2018-10-20
      • 2018-11-04
      • 1970-01-01
      • 2018-08-24
      • 2020-01-16
      • 2013-10-09
      • 2013-11-07
      相关资源
      最近更新 更多