Маршрут Laravel с предложением where не работает должным образом - PullRequest
0 голосов
/ 27 августа 2018

У меня есть следующие маршруты, которые отлично работают:

Route::get('/de', 'FrontpageController@index');

Route::get('/fr', 'FrontpageController@index');

План состоял в том, чтобы объединить их в одно утверждение, как описано в этом, по-видимому, рабочем решении: https://stackoverflow.com/a/34404404/4688612

Таким образом, новый код выглядит следующим образом:

Route::get('/{url}', 'FrontpageController@index')->where('url', 'de|fr');

Но я получаю This page isn’t working. example.test redirected you too many times.

Что я не получаю здесь?

Метод индекса выглядит следующим образомэто:

public function index(Request $request){

        $geoIpRecord = getGeoIpRecord();

        $nearest_places = getNearestPlaces( $geoIpRecord->location->latitude, $geoIpRecord->location->longitude );

        if($request->path() == 'de'){

            $page_title = 'Titel';

            $phone = constant('default_phone_de'); 

            return view('partials.main', compact('nearest_places', 'page_title', 'phone'));

        } elseif ($request->path() == 'fr') {

            $page_title = 'Titre';

            $phone = constant('default_phone_fr'); 

            return view('fr.partials.main', compact('nearest_places', 'page_title', 'phone'));
        }
    }

Редактировать :

Тем временем я обнаружил, что используемый мной пакет локализации как-то влияет на параметр /{url}.

При использовании следующего кода в моем web.php параметр /{url} перестает работать.Это просто становится игонредным.

Route::group(
[
    'prefix' => LaravelLocalization::setLocale(),
    'middleware' => [ 'localize', 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ]
],
function()
{
    Route::get('/', function()
    {
        return redirect(LaravelLocalization::getCurrentLocale());
    });
});

Лично я считаю, что это ошибка, и поэтому связался с разработчиком этого пакета localizaiton.

1 Ответ

0 голосов
/ 27 августа 2018

Если вы используете https://github.com/mcamara/laravel-localization, то я думаю, что вы должны определить свои маршруты следующим образом

Все поддерживаемые многоязыковые маршруты должны входить в эту группу маршрутов

Route::group(['prefix' => LaravelLocalization::setLocale()], function()
{
    /** ADD ALL LOCALIZED ROUTES INSIDE THIS GROUP **/
    Route::get('/', function()
    {
        return View::make('hello');
    });

    Route::get('test',function(){
        return View::make('test');
    });
});

Здесь это соответствует example.com/de/, example.com/de/test

И затем определить все не поддерживаемые языком маршруты за пределами этой группы маршрутов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...