Laravelでビューコンポーザー、サービスプロバイダを利用しています。
ビューコンポーザーのcomposeメソッドで「user」という変数にユーザー情報を取り込んでおります。
また、それを登録しているサービスプロバイダのboot内で、layouts内のページに適用する処理をしています。
ビュー側でページを表示したところ、userが定義されていないエラーが発生します。
ビューコンポーザー、
サービスプロバイダ
ビューの記述を、下記に記載します。
[ビューコンポーザー]
php
1<?php 2 3namespace App\Http\ViewComposers; 4use Illuminate\Contracts\View\View; 5use Illuminate\Contracts\Auth\Guard; 6 7class UserComposer{ 8 protected $auth; 9 10 public function __construct(Guard $auth) 11 { 12 $this->auth = $auth; 13 } 14 15 public function compose(View $view) 16 { 17 $view->with('user', $this->auth->user()); 18 } 19} 20
[サービスプロバイダ側]
php
1<?php namespace App\Providers; 2 3use App\Http\ViewComposers\UserComposer; 4use Illuminate\Support\Facades\View; 5use Illuminate\Support\ServiceProvider; 6 7 8class ComposerServiceProvider extends ServiceProvider 9{ 10 /** 11 * Register services. 12 * 13 * @return void 14 */ 15 public function register() 16 { 17 // 18 } 19 20 /** 21 * Bootstrap services. 22 * 23 * @return void 24 */ 25 public function boot() 26 { 27 View::composers([ 28 UserComposer::class => 'layouts.*' 29 ]); 30 31 } 32} 33
またconfigのprovidersには
App\Providers\ComposerServiceProvider::class,
を追加しています。
この設定の場合、layouts以下のapp.blade.phpで、下記の記述をした際に、ログイン時にエラーが発生します。
{{$user->email}}
なお、
{{ Auth::user()->email }}
にすると正常にuserテーブルのemailが表示されます。
エラーの内容は下記画像のようなものです。
userが定義されていないと言ったエラーのようなのですが、コードから考えられる内容はありますでしょうか。
追記
利用環境は以下のバージョンとなります。
PHP 7.3.6
Laravel Framework 5.7.28
回答2件
あなたの回答
tips
プレビュー