Локализация не работает на некоторых маршрутах, которые имеют слаг, laravel - PullRequest
0 голосов
/ 27 марта 2020

Я установил локализацию в моем laravel приложении, оно работает нормально, но на некоторых страницах, где есть слаг, не работает, когда я меняю язык.

    Route::get('p/{slug}', ['as' => 'single_page', 'uses' => 'PostController@showPage']);

Route::get('categories/{id}/{slug?}', ['as' => 'single_category', 'uses' => 'CategoriesController@singleCategory']);

Route::get('campaign/{id}/{slug?}', ['as' => 'campaign_single', 'uses' => 'CampaignsController@show']);

Я заметил, что когда я меняю язык на этих предыдущих страницах я получил ошибку 404, и слаг был удален и заменен на локаль / {$ locale}:


    localhost/mysite/public/p/about  //until now page work fine but when i change language 
    localhost/mysite/public/p/locale/en  // i got this (slug was removed)
    (then i got the 404error , same thing for all route that  have a slug)
  • мой контроллер:
    <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class LangController extends Controller
{
    public function index ($lang){
        app()->setLocale($lang);

        echo trans('lang.home');
    }
}
  • промежуточное ПО:
    <?php

namespace App\Http\Middleware;

use Closure;

class localization
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

        if(\Session::has('locale')){

            \App::setlocale(\Session::get('locale'));

        }
        return $next($request);
    }
}
  • Маршрут:
Route::get('locale/{locale}', function ($locale){
Session::put('locale',$locale);
return redirect()->back();
}
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...