2016-05-16 5 views
0

У меня есть этот route.php:Передача переменной в контроллер от маршрута

Route::group(['prefix' => 'v3/page1'], function() 
{ 
    Route::get('page1', '[email protected]'); 
}); 

Route::group(['prefix' => 'v4/page1'], function() 
{ 
    Route::get('page1', '[email protected]'); 
}); 

Как вы можете видеть, есть 2 группы, которые имеют одни и те же маршруты. Единственное отличие состоит в том, что префикс несколько отличается для каждой группы.

Мне нужен способ передачи данных с маршрута на контроллер. В этом случае Im заинтересован только в прохождении строки «v3» или «v4» от маршрута к контроллеру.

Я прочитал немного о before_filter. Но я не уверен, что это правильный путь. Я могу себе представить, что решением может быть извлечение url (возможно, в конструкторе для контроллера), и оттуда понять, является ли префикс v3 или v4. Но мне интересно, есть ли лучший способ, более лучшая практика. Может быть, что-то с before_filter?

+1

Ответ на этот вопрос [http://stackoverflow.com/questions/31113361/laravel-5-get-route-prefix-in-controller-method) применим к вашим. Также вы можете удалить часть «/ page1» из своих префиксов. – sevavietl

ответ

3

Вы можете попробовать что-то вроде:

Route::group(['prefix' => '{version}/page1'], function(){ 
    Route::get('page1', '[email protected]'); 
})->where('version', 'v[3|4]'); 

В контроллере вы можете получить версию с помощью $request->version

1

Я бы написать это

Route::group(['prefix' => '{version}'], function() 
{ 
    Route::get('page1', '[email protected]'); 
}); 

Я бы не пройти в «page1» в префиксе, так как это будет означать, стр.1 покажет дважды в маршрут. В способе 'page1 ($ version)' вы должны иметь возможность получить версию. Я еще не тестировал это.

Смежные вопросы