は、このクラスによって処理されたミドルウェアで初期化されます。サービスプロバイダが起動されるとすべてのミドルウェアが実行されるため
\Illuminate\Session\Middleware\StartSession::class
、このミドルウェアは、サービスプロバイダの後、実行されていませんブートフェーズ
ので、代わりにサービスプロバイダから変数を共有する、あなたがミドルウェアを作成することができ、そこからセッション変数を共有したり、あなたのサービスプロバイダでのコールバックでのView Composerを使用することができます。
public function boot()
{
view()->composer('*', function ($view)
{
//this code will be executed when the view is composed, so session will be available
$view->with('key', \Session::get('key'));
});
}
これは、ビューを構成する前に、コールバックがミドルウェアがすでに実行されているので、セッションは一般に空く
になりますと、あなたのミドルウェアの実行順序に注意を払う、と呼ばれるように、動作します:あなたがミドルウェアからセッションにアクセスしたい場合は、LaravelのStartSession::class
ミドルウェアの後に実行する必要があります
ありがとうございます。答えは良いですが、それは機能しますが、私のアプローチに間違いがありました。値が後で設定されるだけなので、コントローラが早すぎる前に値を表示したい。最初のロードでは空になります。多分、ビューコンポーザーが私の問題を解決するでしょう。 :) –
コントローラに変数を設定すると、ミドルウェアの最初の呼び出し(設定前)でnullになります。あなたはミドルウェアの中の文を 'if(!is_null($ var)){//共有}'で囲むこともできるので、最初の呼び出しでは何も共有しません。あなたのアプリのニーズ – Moppo
ありがとう、間違いなく有用な情報! :) –