この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
更新日時:2019-03-31 14:42:36
タイトル: ViewComposerを用いてviewに共通の値を付与する方法
SEOタイトル: 【Laravel】ViewComposerを用いてviewに共通の値を付与する方法
Layoutで必ず取得しなければならない値をわざわざ一つずつのコントローラーで取得するのは冗長的である。
当問題はViewComposerという機能を用いて解決することができる。
サービスプロバイダー
|
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class CommonServiceProvider extends ServiceProvider
{
/**
* コンテナ結合の登録
*
* @return void
*/
public function boot()
{
View::composer(
['layout.*', 'menu'], //layout配下の全てのビューとmenuビューに適用
'App\Http\ViewComposers\CommonComposer'
);
}
}
|
コンポーザー
|
<?php
namespace App\Http\ViewComposers;
use Illuminate\View\View;
use App\Repositories\UserRepository;
class ProfileComposer
{
/**
* userリポジトリの実装
*
* @var UserRepository
*/
protected $users;
/**
* 新しいプロフィールコンポーザの生成
*
* @param UserRepository $users
* @return void
*/
public function __construct(UserRepository $users)
{
// 依存はサービスコンテナにより自動的に解決される
$this->users = $users;
}
/**
* データをビューと結合
*
* @param View $view
* @return void
*/
public function compose(View $view)
{
$view->with('count', $this->users->count());
}
}
|