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

时间:2020-07-11 00:53:52

标签: laravel variables routes prefix

在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

哪里有问题以及如何解决?

2 个答案:

答案 0 :(得分:2)

您的路线具有两个变量{locale}{id},但是您的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之前,因此请确保以正确的顺序定义它们。

答案 1 :(得分:-1)

Route::group(['as'=>'user.','prefix'=>'user','namespace'=>'User','middleware'=>['auth','user']], function (){
    Route::get('dashboard','DashboardController@index')->name('dashboard');
});
相关问题