在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
哪里有问题以及如何解决?
答案 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');
});