Существующая функциональность:
Текущий веб-сайт разработан с использованием Laravel 12 и полностью независим от базы данных. Вся транзакция электронной торговли выполняется в сеансах от начала до конца.
Улучшение:
Должен быть предусмотрен механизм для определения региона пользователя и валюты, в которой пользователь обращается к веб-сайту. Все существующие маршруты должны иметь префикс региона или без него в зависимости от следующих условий:
- Если валюта пользователя — INR, то все маршруты должны иметь префикс /in.
- Если валюта пользователя — евро, то все маршруты должны иметь префикс /eu.
- Если валюта пользователя — GBP, тогда все маршруты должны иметь префикс /uk.
- Для остальных валют префикс не должен добавляться, а существующие маршруты должны работать без какого-либо префикса.
Создано промежуточное программное обеспечение и изменен web.php. Он работает для URL-адресов с префиксом, но выдает 404 при доступе к URL-адресу без префикса.
Пример: домен.com/uk/products — работает и домен.com/products — не работает.
Пожалуйста, помогите, заранее спасибо.
Ниже приведен код из web.php:
// Root without prefix must be defined explicitly because the group is prefixed
Route::get('/', [HomeController::class, 'index'])->name('home');
// Define accepted region keys based on your config keys (NOT values)
$validRegions = array_keys(config('regions.currency_map', []));
Route::prefix('{region?}')
->where(['region' => implode('|', $validRegions)]) // Accept only valid region keys or null
->middleware('region_handler')
->group(function () {
// Re-define the root route here to catch with prefix as well
Route::get('/', [HomeController::class, 'index'])->name('home.prefixed');
Route::get('/products', [ProductsController::class, 'index'])->name('ecom-products');
});
Подробнее здесь: https://stackoverflow.com/questions/797 ... ith-prefix
Мобильная версия