Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel路由组前缀-变量不工作_Laravel_Variables_Routes_Prefix - Fatal编程技术网

Laravel路由组前缀-变量不工作

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

在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');
});
});
   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');
});