Изменить имя таблицы во время выполнения по параметру URL с помощью Laravel - PullRequest
0 голосов
/ 14 мая 2019

Я хочу изменить некоторые имена таблиц в соответствии с параметром i18N моего URL, например: https://localhost/fr, https://localhost/en, ... Имя таблицы будет выглядеть так: tablename_fr, tablename_en Я хочу сделать это, чтобы максимально упростить переход моего сайта на i18n. Как я могу сделать это с Laravel? И вы видите проблему с производительностью этой системы? Может, это нарушит кеш Laravel / Eloquent?

1 Ответ

0 голосов
/ 14 мая 2019

Вы можете перетаскивать файлы для таблиц.

# resources/lang/en/tables
// English names for tables
return [
    'cars' => 'cars'
    'computers' => 'computers'
]
# resources/lang/fr/tables.php
// French names for tables
return [
    'cars' => 'voitures'
    'computers' => 'ordinateurs'
]

Тогда в ваших представлениях вы можете формировать URL с помощью помощника url().Представьте, что у нас есть $car с id: 1

url(__('tables.cars').'/'.$car->id)
// if App::getLocale() === 'en', it returns /cars/1
// if App::getLocale() === 'fr', it returns /voitures/1
// if App::getLocale() === 'es', it returns /cars/1 because there's no 'es' lang file in this example and by default, 'en' is the fallback language.

Однако вам нужно либо установить дополнительные правила маршрутизации.

В качестве альтернативы, вы можете настроить дополнительные маршруты i18n и затем вызватьпомощник по маршруту ()

# routes/web.php
// You could group the routes to add a prefix, but the idea is the same
Route::get('cars/{car}', CarController@show)->name('en.car.show');
Route::get('voitures/{car}', CarController@show)->name('fr.car.show');
# in a view
route(App::getLocale().'.car.show', [$car->id]) 
// returns either cars/1 or voitures/1 depending on the locale
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...