Как изменить локаль блейд-файла - PullRequest
0 голосов
/ 27 сентября 2018

Мы используем IP2LOCATIONLARAVEL для получения кодов стран посетителей.Если IP-адрес посетителя из Ирана (код страны ISO = IR), атрибут lang тега html в blade.php должен быть установлен как 'fa', в противном случае как 'en'.

Во-первых, мы добавилиэта строка в нашем config / app.php:

'locale' => 'en',
// we added:
'other_locale' => ['fa-IR'],

Мы также создали промежуточное ПО и правильно добавили его в app / Http / kernel.php.

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Foundation\Application;
use Ip2location\IP2LocationLaravel\Facade\IP2LocationLaravel;

class LocaleHandler
{
    public function __construct(Application $app, Request $request) {
        $this->app = $app;
        $this->request = $request;
    }

    public function handle($request, Closure $next)
    {
        if (app()->getLocale()=='fa'){
            if(in_array($request->segment(0), config('app.other_locale'))){
                $this->app->setLocale($request->segment(0));
            }else{
                $this->app->setLocale(config('app.locale'));
            }
        }

        return $next($request);
    }
}

Затем мы обновили приложение/Providers/RouteServiceProvider.php:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;

class RouteServiceProvider extends ServiceProvider
{

    protected $namespace = 'App\Http\Controllers';

    public function boot()
    {
        parent::boot();
    }


    public function map(Request $request)
    {
        $this->mapApiRoutes();
        $this->mapWebRoutes($request);
    }


    protected function mapWebRoutes(Request $request)
    {
        if(in_array($request->segment(0), config('app.other_locale'))){
            $locale = $request->segment(0);

        }else{
            $locale = null;
        }

        Route::group([
            'middleware' => 'web',
            'namespace' => $this->namespace,
            'prefix' => $locale
        ], function ($router) {
            require base_path('routes/web.php');
        });

        Route::middleware('web')
            ->namespace($this->namespace)
            ->group(base_path('routes/web.php'));
    }


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

localhost / laravel / public / fa is 404 страница ошибки.как мы можем обновить

<html lang="{{ app()->getLocale() }}">

В нашем блейд-файле, если код страны посетителя был IR?

1 Ответ

0 голосов
/ 27 сентября 2018

вы уверены, что добавили промежуточное ПО в сеть в файл kernel.php

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\LocaleHandler::class,
...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...