Валидатор и локаль: проблема с сеансом в Laravel 11Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Валидатор и локаль: проблема с сеансом в Laravel 11

Сообщение Anonymous »

На веб-сайте, который я разрабатываю, у меня возникла небольшая проблема с сеансом.
Веб-сайт переведен на 3 языка, поэтому у меня есть меню для переключения между языками.
Чтобы чтобы это заработало, мне пришлось добавить следующий код в bootstrap/app.php:

Код: Выделить всё

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Illuminate\Session\Middleware\StartSession;
use App\Http\Middleware\SetLocale;

return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->append(StartSession::class);
$middleware->append(SetLocale::class);
})
->withExceptions(function (Exceptions $exceptions) {
})->create();
Класс SetLocale:

Код: Выделить всё

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;

class SetLocale
{
public function handle(Request $request, Closure $next): Response
{
if ($request->session()->has('locale')) {
App::setLocale($request->session()->get('locale'));
}

return $next($request);
}
}
Класс и маршрут LanguageController:

Код: Выделить всё

Route::get('language/{lang}', [LanguageController::class, 'switchLanguage'])->name('language');

Код: Выделить всё

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Log;

class LanguageController extends Controller
{
public function switchLanguage(Request $request)
{
$lang = $request->lang;

if (! in_array($lang, ['fr', 'en', 'de']))
$lang = config('app.locale');

session(['locale' => $lang]);

return redirect()->back();
}
}
Все это очень хорошо работает для языков, но проверка форм работает только наполовину.
Под этим я подразумеваю, что когда я проверяю форму без заполнения обязательных полей проверка останавливает процесс и возвращается на страницу формы, но не отображает
поля с ошибками.
Если я деактивирую свой код, добавленный в загрузочный файл /app.php проверка работает на 100% но не функция языков
Есть идеи, как решить эту небольшую проблему?

Подробнее здесь: https://stackoverflow.com/questions/792 ... laravel-11
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»