@nicolaa

Как указать город в url?

Есть несколько url
Route::get('part/{slug}', [App\Http\Controllers\PartsController::class, 'part'])->name('part');
Route::get('parts', [App\Http\Controllers\PartsController::class, 'parts'])->name('parts');
Route::get('spare-cars/{marka?}/{model?}/{slug?}', [App\Http\Controllers\CarController::class, 'spareCars'])->name('spare.cars');

Нужно указать город перед каждым url, например

site.ru/ekaterinburg/part - города указываются динамически, при этом нужно в случаи отсутствия города, подставлять его автоматически, например

Мы переходим по адресу site.ru/part - делаем редирект на дефолтное значение города - site.ru/moskva/part и аналогично с другими адресами

Как это можно реализовать?
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 1
@nicolaa Автор вопроса
Подсказали решение проблемы на stackoverflow
Все роуты добавляем в группу и делаем обработку, если зашли без города, не знаю на сколько это правильное решение, но на данный момент это решение работает

Route::prefix('{city?}')->group(function() {
    Route::get('part/{slug}', [App\Http\Controllers\PartsController::class, 'part'])->name('part');
    Route::get('parts', [App\Http\Controllers\PartsController::class, 'parts'])->name('parts');
    Route::get('spare-cars/{marka?}/{model?}/{slug?}', [App\Http\Controllers\CarController::class, 'spareCars'])->name('spare.cars');
    Route::get('/', [App\Http\Controllers\PartsController::class, 'checkUrl'])->name('checkUrl');
});


    public function checkUrl($slug) {
        if($slug == 'parts') {
            return redirect('moskva/parts');
        } else if($slug == 'part') {
            return redirect('moskva/part');
        }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы