質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

意見交換

クローズ

8回答

818閲覧

Laravelのセッションについてxdebugの$_SESSIONのように値を簡単に確認できないのでしょうか

eisaku123

総合スコア77

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/10/20 14:20

0

0

テーマ、知りたいこと

いつもお世話になります。標題の通り
Laravelのセッション(session()系)について、xdebugの$_SESSIONのように値を簡単に確認できないのでしょうか

イメージ(↓ここにsession()を表示させたい)
イメージ説明

背景、状況

phpのスクラッチの脱却のためにLaravel sailに取り組み、勉強の中でセッションの値をxdebugのSESSIONから見れなくなっていたので困ってしまったことがきっかけとなりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答8

#1

eisaku123

総合スコア77

投稿2023/10/21 11:14

すみません、誰か回答をお願いします。
みなさん、どのように対応され、満足されているのでしょうか?

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

AbeTakashi

総合スコア4902

投稿2023/10/21 17:41

変数トレースの中の$requestの中にsessionがあって、ちょっと見にくいですが見ることはできますよ。

見やすくしたいなら処理の冒頭で共通変数の中にsessionまるっと入れちゃうとかするのもありかもですね。

参考)
https://zakkuri.life/laravel-global-variable/

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

eisaku123

総合スコア77

投稿2023/10/21 23:32

#2
Abeさん、アドバイス、ありがとうございます。
見つからなぬまま、どうしたら良いので、迷宮入りしてました。

見やすくしたいなら処理の冒頭で共通変数の中にsessionまるっと入れちゃうとかするのもありかもですね。

以下のコードを追記しましたがうまく、xdebugのところに表示されないです。
ここは起動時の初期設定のところをいうのを初めて知りました。(laravel始めたばかりなので)ペコリ

namespace App\Providers; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Register any application services. */ public function register(): void { // } /** * Bootstrap any application services. */ public function boot(): void { $allSessionData = session()->all();// 追加 view()->share('allSessionData', $allSessionData); // 追加 } }

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#4

退会済みユーザー

退会済みユーザー

総合スコア0

投稿2023/10/22 02:07

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#5

eisaku123

総合スコア77

投稿2023/10/22 22:21

#4 kawaxさん、ご回答ありがとうございます。

laravel-debugbarはviewの部分では、sessionの値は見れますが、コントローラー(Controllers)の部分では見れないです。
コントローラーの部分でステップ実行で見える方法はありますでしょうか?

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#6

Eggpan

総合スコア3257

投稿2023/10/25 14:59

編集2023/10/25 15:00

$requestのsessionだと辿りづらい、とかであればグローバル変数とかに入れておくしかないのかなとは思います。
ミドルウェアを追加して、APP_DEBUGが有効であればグローバル変数にいれちゃうとかはどうでしょうか。

php(app/Http/Middleware/DebugSession.php)

1<?php 2 3namespace App\Http\Middleware; 4 5use Closure; 6use Illuminate\Http\Request; 7 8class DebugSession 9{ 10 public function handle(Request $request, Closure $next) 11 { 12 if (config('app.debug')) { 13 global $DEBUG_SESSION; 14 $DEBUG_SESSION = session()->all(); 15 } 16 return $next($request); 17 } 18}

php(app/Http/Kernel.php)

1 protected $middlewareGroups = [ 2 'web' => [ 3 \App\Http\Middleware\EncryptCookies::class, 4 \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 5 \Illuminate\Session\Middleware\StartSession::class, 6 \App\Http\Middleware\DebugSession::class, // 追加 7 \Illuminate\View\Middleware\ShareErrorsFromSession::class, 8 \App\Http\Middleware\VerifyCsrfToken::class, 9 \Illuminate\Routing\Middleware\SubstituteBindings::class, 10 \App\Http\Middleware\Locale::class, 11 \App\Http\Middleware\Datadog::class, 12 ],

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#7

eisaku123

総合スコア77

投稿2023/10/30 00:42

#6 Eggpanさんありがとうございます。
返信、大変遅くなりまして申し訳ございません
画像通り、表示されてすごいと思いましたが、、リアルタイムに変化がないので、残念です。
イメージ説明
何か対策はあるのでしょうか?

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#8

Eggpan

総合スコア3257

投稿2023/11/08 15:49

middleware起動時点のセッション値を配列に代入していますから、提示したコードではコントローラ内での変更を辿ることは出来ないです。

セッション配列が入っている $arrtibutes はprotectedな変数なので、参照を得ることは出来ません。

セッションを管理しているクラス変数をいれておくくらいしか無いと思います。

php

1 public function handle(Request $request, Closure $next) 2 { 3 if (config('app.debug')) { 4 global $DEBUG_SESSION; 5 $DEBUG_SESSION = session()->driver(); 6 } 7 return $next($request); 8 }

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問