Laravel開発

laravelのサービスプロバイダーを複数のビューで利用する方法

laravel Laravel開発

こんにちは。テダスクのToshiです!

今日は、このサイトでは初めて、PHPフレームワークのLaravelについての記事を書きます。

 

このサイトを見に来ている方は恐らくサービスプロバイダーがどういうものなのかが分かっていて調べているかとは思うのですが、例を挙げて説明すると、ブログのサイドバーで新着記事とかカテゴリー一覧とか表示する場合、Viewごとにコントローラーに毎回新着記事の取得とカテゴリー一覧の取得をしなければなりませんよね。

それって、同じ処理を繰り返し記述しているという、DRY原則に反するわけですね。

それを防ぐための仕組みで、このサービスプロバイダーを利用する事で、一箇所に処理を纏める事が出来ます。

で、使い方についてはこちらを参考にさせていただきました。

laravel5のサイドバーで毎回同じ情報を表示するには、各ControllerではなくAppServiceProvider.phpのbootに処理を記述する事!

このサイトでは、新たにサービスプロバイダーを作るのではなく、既存のAppServiceProvider.phpを利用するので十分という点が特に良いなと思いました。

この記事の中では

public function boot()
{
// 特定のbladeファイルを指定する
// 引き渡したい変数名と値をセットしておくと、Controllerから渡さなくてもblade上で使える!
view()->composer(‘include.sidebar’, function($view) {
$view->with(‘bladeで使う変数名’, なんたらテーブルのクラス名::get何かの値());
});

// 全bladeファイルで使いたい時は、こうする
//view()->share(‘bladeで使う変数名’, なんたらテーブルのクラス名::get何かの値());

}

参考:laravel5のサイドバーで毎回同じ情報を表示するには、各ControllerではなくAppServiceProvider.phpのbootに処理を記述する事!

と書いてあって、表示するviewのテンプレートがinclude.sidebarというところなのですが、私の場合、使用するViewファイルを複数指定したくて色々試したのですが、こうすると、複数のViewファイルで読み込めるようになります。

appProvidersAppServiceProvider.php

View::composer(['index','post.detail','post.category','news.index','news.detail'], function ($view) {

…

  $view->with('ads',$ads)
  ->with('recommends',$recommends)
  ->with('populars',$populars);
});

View::composer()の中に、配列でカンマで区切ると指定した各ビューでサービスプロバイダーが利用出来るようになります。

因みに、参考にさせていただいたサイトのLaravelのバージョンは5.1のもののようですが、現在の最新の5.6でも問題なく動いています。

 

以上、laravelのサービスプロバイダーを複数のビューで利用する方法でした。

 

こちらの記事もおすすめです☆

background-imageのurl指定で画像が表示されない原因
WordPressにソーシャルボタンを設置する方法とおすすめプラグイン
WordPressで日本語Googleフォント(Noto Sans JP)を使う簡単な方法
laravelのformでgetでデータを送信・取得する方法
ユーザー名もメールアドレスも忘れてしまったWordPressにログインする方法

 

 

この記事を書いた人
Toshi Seito

TEDASK代表
WordPressに関する相談実績のべ300件以上、タイムチケットでのWordPressの立ち上げお手伝いのチケット販実績240件以上!WordPressのカスタマイズから、WEBサービス制作、ホームページ制作のご相談はお任せ下さい。

Toshi Seitoをフォローする

コメント

タイトルとURLをコピーしました