ということで今回は ViewComposer を使って、どのビューからでもログイン中のユーザーにアクセスできるようにしてみたいと思います。
【実行環境】Laravel 5.3
手順は以下の3つです。
- ViewComposer を作る
- ServiceProvider を作る
- ServiceProvider を登録する
ではひとつひとつ見ていきましょう。
1. ViewComposer を作る
まず ViewComposer の作成です。
デフォルトでは専用のフォルダは用意されていませんので app/Http/ViewComposers というフォルダを新たに作成しましょう。
そして、その中に AuthViewComposer.php というファイルを作成&以下のコードを保存します。
<?php namespace App\Http\ViewComposers;
use Illuminate\View\View;
class AuthViewComposer
{
protected $user;
public function __construct()
{
$this->user = \Auth::user();
}
public function compose(View $view)
{
$view->with([
'user' => $this->user
]);
}
}
2.ServiceProvider を作る
次に専用の ServiceProvider を作ります。
app/Providers/ViewComposerServiceProvider.php を作成&以下のコードを保存してください。
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class ViewComposerServiceProvider extends ServiceProvider
{
public function boot()
{
\View::composers([
\App\Http\ViewComposers\AuthViewComposer::class => 'layouts.*'
]);
}
}
※ ちなみに layouts.* の部分ではどの view に適用するかを設定することができます。3.ServiceProvider を登録する
最後は先ほど作った ViewComposerServiceProvider を config/app.php へ登録します。
'providers' => [
App\Providers\ViewComposerServiceProvider::class,
],
さあ、以上で設定は完了です。好きな view の中で {{ $user->email }} という風にユーザー情報にアクセスしてみましょう。
なお、念のために、以下のコマンドを実行しておくといいかもしれません。
composer dumpautoload -o
今回は以上です。
お疲れ様でした。
0 件のコメント:
コメントを投稿