Laravel路由组前缀-变量不工作
在web.php中:Laravel路由组前缀-变量不工作,laravel,variables,routes,prefix,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'=>['l
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');
});
});
public function getTours($id){
dd($id);
}
在HomeController中:
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');
});
});
public function getTours($id){
dd($id);
}
尝试访问url时:example.com/en/tour/5
取得成果
en
,但应为5
问题在哪里以及如何解决?您的路线有两个变量,
{locale}
和{id}
,但您的控制器方法仅引用其中一个。您需要同时使用以下两种方法:
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之前,因此请确保以正确的顺序定义它们。非常感谢Tim,我以前尝试过这个问题,由于某些原因它不起作用,但现在我重试时它没问题。非常感谢。我没有投反对票,我实际上投了赞成票,但如果你能提供更多信息,比如解释你的解决方案是如何解决问题的,或者它的作用,你的答案会更有用。
Route::group(['as'=>'user.','prefix'=>'user','namespace'=>'User','middleware'=>['auth','user']], function (){
Route::get('dashboard','DashboardController@index')->name('dashboard');
});