Laravel 路由组前缀 - 变量不起作用

Posted

技术标签:

【中文标题】Laravel 路由组前缀 - 变量不起作用【英文标题】:Laravel route group prefix - variable not working 【发布时间】:2020-07-11 00:53:52 【问题描述】:

在 web.php 中:

Route::group(['middleware'=>['checklang','checkmoney']],function()
    Route::get('/', function () 
    return redirect('/'.session()->get('lang'));
    );
    
    Route::group([
    'prefix' => 'locale',
    'where'=>['locale'=>'[a-zA-Z]2']],
 function() 

    Route::get('/tour/id','HomeController@getTours');
);
);

在 HomeContoller 中:

   public function getTours($id)
 
    dd($id);

尝试访问 url 时:example.com/en/tour/5 得到结果 en ,但应该是 5

问题出在哪里以及如何解决?

【问题讨论】:

【参考方案1】:

您的路线有 2 个变量,localeid,但您的 Controller 方法仅引用其中一个。您需要同时使用两者:

web.php:

Route::group(['prefix' => 'locale'], function () 
  ...
  Route::get('/tour/id', 'HomeController@getTours');
);

HomeController.php

public function getTours($locale, $id) 
   dd($locale, $id); // 'en', 5

注意:定义的顺序很重要; locale (en) 在 id 5 之前,因此请确保以正确的顺序定义它们。

【讨论】:

非常感谢蒂姆,我之前尝试过提出这个问题,但由于某种原因它不起作用,但现在当我重试时就可以了。非常感谢。

以上是关于Laravel 路由组前缀 - 变量不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有前缀和资源的laravel嵌套路由不起作用

Laravel Admin 路由不起作用,但其他路由不起作用

Laravel - 路由不起作用

使用 Vue Router 时 Laravel 路由不起作用

使用 Laravel 路由获取 404 - 重写不起作用

为啥 Laravel 发布方法在路由器页面上不起作用?