Laravel префикс группы маршрутов - переменная не работает - PullRequest
0 голосов
/ 11 июля 2020

в Интернете. 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-адресу: пример .com / en / tour / 5 получаем результат en, а должен быть 5

Где проблема и как ее решить?

Ответы [ 2 ]

2 голосов
/ 11 июля 2020

Ваш маршрут имеет 2 переменные, {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, поэтому убедитесь, что вы задали их в правильном порядке.

0 голосов
/ 11 июля 2020
Route::group(['as'=>'user.','prefix'=>'user','namespace'=>'User','middleware'=>['auth','user']], function (){
    Route::get('dashboard','DashboardController@index')->name('dashboard');
});
...