Изменение направления маршрута зависит от выбранного языка

#php #laravel

Вопрос:

так что это мой маршрут

 Route::group(['prefix' => '{locale}'],function(){
Route::get('/','Room_randring_welcom@function0')->name('post')->middleware('setLocale');});
 

например, если я выбрал es на английском или любом другом языке, на который я хочу перейти

 Route::group(['prefix' => '{locale}'],function(){
Route::get('/','Room_randring_welcom@function1')->name('post')->middleware('setLocale');});
 

**таким образом, я могу извлекать данные из другого файла JSON на другом языке **

Комментарии:

1. Зачем вам использовать другое действие контроллера? Это должно обрабатываться в контроллере, а не в маршрутах.

2. что вы пробовали до сих пор?

3. Вы можете сделать это с помощью редактирования RouteServiceProvider , скажите мне, если вы не знаете, как это сделать.

4. Мохаммед Гамаль Эльдин я не знаю, как это сделать.

5. @SMI Мой контроллер выглядит так. Мне нужно условие,которое указывает, если lang, en выбрал чтение данных из этого файла JSON, иначе FR lang выбрал чтение данных из другого файла JSON2. ` `класс Room_randring_welcom расширяет контроллер { индекс общедоступной функции(){ $сообщения = file_get_contents(базовый путь(‘/storage/Rooms_Data.json’)); $сообщения = код json_decode($сообщения, true); $коллекция=сбор($сообщения); представление возврата(‘добро пожаловать’,[ ‘Уникальные идентификаторы пользователей’=>$коллекция, ]); } }«

Ответ №1:

Вы можете сделать это путем редактирования RouteServiceProvider , вы найдете его по адресу root-app/app/Providers/RouteServiceProvider.php

Для Laravel

 public function map()
{

   $this->mapApiRoutes();

   $this->mapWebRoutes();

   $this->mapArRoutes(); // Add this line with local name or anything you want.
}

//add function with the new name in my case will be "mapArRoutes"

protected function mapArRoutes()
{

    Route::middleware('web')
       ->prefix('ar') // Here choose a local do you want
       ->namespace($this->namespace)
       ->group(base_path('routes/ar.php')); // any name do you want
}

// You will find a function called "mapWebRoutes", edit it.

protected function mapWebRoutes()
{
    // This is a default route you just need add perfix with anothoer local do you want
   Route::middleware('web')
      ->prefix('en') // for example i added en
      ->namespace($this->namespace)
      ->group(base_path('routes/web.php'));
}
 

Затем в папку/каталог маршрутов добавьте новый файл, как в моем примере, это будет ar.php

добавьте все маршруты в файл, связанный с локальным.

Для Laravel >= 8

 ...
public function boot()
{
 $this->configureRateLimiting();

 $this->routes(function () {
    Route::prefix('api')
       ->middleware('api')
       ->namespace($this->namespace)
       ->group(base_path('routes/api.php'));


    // Add this lines
    // Start
    Route::middleware('web')
       ->prefix('ar') // Here choose a local do you want
       ->namespace($this->namespace)
       ->group(base_path('routes/ar.php')); // any name do you want

    // This is a default route you just need add perfix with anothoer local do you want
    Route::middleware('web')
      ->prefix('en') // for example i added en
      ->namespace($this->namespace)
      ->group(base_path('routes/web.php'));
    // End


 });
}
...
 

Надеюсь, это ясно.

Это все.