Передать переменную с сеансом в промежуточном программном обеспечении в файл blade-сервера в главном Laravel - PullRequest
0 голосов
/ 18 мая 2019

В настоящее время я пытался поделиться переменной, которая использует идентификатор сеанса, вот так.

$currentSessionID = session()->getId();
$inCartDetails = Cart::where('session_id', $currentSessionID)->get();
View::share('inCartDetails', $inCartDetails);

Я поместил это в загрузку AppServiceProvider, но он не работал, потому что «данные сеанса недоступны в процессе загрузки приложения. Вы должны использовать промежуточное ПО, как сказал Тейлор Отвелл в« Добавить событие для сеанса, запущенного в сеансе ».

Я следовал, как говорится, и создал промежуточное программное обеспечение с именем CommonData

public function handle($request, Closure $next)
{
    $currentSessionID = session()->getId();
    $inCartDetails = Cart::where('session_id', $currentSessionID)->get();
    View::share('inCartDetails', $inCartDetails);
    // return $next($request);
}

Как бы я использовал эту переменную из промежуточного программного обеспечения в заголовке, который глобально присутствует во всех моих представлениях? Сам заголовок не имеет контроллера, поскольку он включен в основной блейд. Есть идеи?

1 Ответ

1 голос
/ 18 мая 2019

Почему бы не сохранить $inCartDetails в переменной сессии, используя session () helper?

Чтобы установить переменную сессии:

session(['inCartDetails' => $inCartDetails]);

Чтобы получить переменную сессии в любом месте вашего проекта (маршруты, контроллеры и представления):

echo session('inCartDetails'); // or {{ session('inCartDetails') }} for blade views
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...