Как установить язык валидации в зависимости от типа пользователя Laravel - PullRequest
0 голосов
/ 27 февраля 2019

В моем приложении три типа пользователей, и если тип пользователя - пользователь, сообщения проверки должны быть на английском языке, в противном случае, если администратор или компания, это должен быть японский язык.

В моем app.php файле Ido:

'locale' => 'en',
'fallback_locale' => 'ja',

И в моем web.php файле:

Route::group(['middleware' => 'auth:user'], function () {
    App::setLocale('en');
    //user controllers
});

Route::group(['middleware' => 'auth:company'], function () {
    App::setLocale('ja');
    //company controllers
});

Route::group(['middleware' => 'auth:admin'], function () {
    App::setLocale('ja');
    //admin controllers
});

Когда я не установил язык администратора для ja, проверка пользователя - английский ито же самое с администратором и компанией.Теперь я установил для администратора и компании значение ja, сообщения о проверке пользователей теперь также японские.Это каталог языков для файлов валидации.

enter image description here

У меня действительно заканчиваются идеи, как это сделать, и любая помощь приветствуется.Я пробовал предлагаемые решения в Интернете, но ничего не работает.

1 Ответ

0 голосов
/ 27 февраля 2019

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

Возможно, вот так: https://github.com/akaunting/language

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

<?php

namespace App\Http\Middleware;

use Closure;
use App;
use Illuminate\Support\Facades\Auth;

class SetLocaleForAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            if(in_array(Auth::user()->email, ['admin@site.com','admin2@site.com','admin3@site.com'])) {
                App::setLocale('ja');
            }
        }

        return $next($request);
    }
}

Не забудьте добавить промежуточное ПО в веб-группу в Kernel.php

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