У меня есть промежуточное ПО, которое считывает языковые настройки из базы данных и соответственно устанавливает языковой стандарт приложения:
public function handle($request, Closure $next)
{
$lang = SystemSetting::find('System Language');
\App::setLocale($lang->value);
return $next($request);
}
Я также хотел бы установить направление текста (rtl или ltr), чтобы оно было доступно для моего шаблона лезвия для загрузки необходимых файлов css.
Я могу легко сделать это в контроллере, но я не хочу повторять это в каждом контроллере и передавать его представлению для каждой страницы в моем приложении. Есть ли способ установить глобальную переменную или что-то подобное, чтобы я мог сделать это в моем шаблоне лезвия:
@if ($RTL)
{{ Html::style('css/rtl/app-rtl.css') }}
@else
{{ Html::style('css/app.css') }}
@endif






Вы можете использовать фасад просмотра, о котором вы можете узнать больше о здесь.
Это позволяет вам напрямую подготовить любые данные для представлений и сделать их доступными там.
<?php
use Illuminate\Support\Facades\View;
public function handle($request, Closure $next)
{
$lang = SystemSetting::find('System Language');
\App::setLocale($lang->value);
View::share('rtl', true);
return $next($request);
}
Но я бы посоветовал изучить перепрошивку этого в сеанс.
@ Патриот Ах да, да. Поскольку вы используете лезвие, вы также можете просто получить значение из фасада сеанса в представлении.
Вы можете изменить с переводом
<html lang = "{{config('app.locale')}}" dir = "{{@trans('interface.dir')}}">
интерфейс в файле ar:
return [
//add this line in ar file
'dir' =>'rtl',
]
интерфейс в файле en:
return [
//add this line in en file
'dir' =>'ltr',
]
Но если я прошу его в сеанс, разве мне все равно не придется передавать его из контроллера в представление? Я отправляю сообщения о состоянии сеансам и все равно передаю их от контроллера.