ページの作成

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレートを更新

42. 【Laravel】ViewComposerを用いてviewに共通の値を付与する方法

Layoutで必ず取得しなければならない値をわざわざ一つずつのコントローラーで取得するのは冗長的である。

当問題はViewComposerという機能を用いて解決することができる。

 

プロバイダーの作成

php artisan make:provider ComposerSeriviceProvider

 

プロバイダーの登録

config/app.phpに以下の記述を追加する。

'providers' => [

    ...

    App\Providers\ComposerSeriviceProvider::class,

]

 

サービスプロバイダー

<?php

namespace App\Providers;

use App\Http\ViewComposers\CommonComposer;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class ComposerSeriviceProvider extends ServiceProvider
{
    /**
     * コンテナ結合の登録
     *
     * @return void
     */
    public function
boot()
    {

        // クラスがどのビューに対して実行されるか定義する方法
         View::composers([
            CommonComposer::class => [
                'layout.*',
                'admin.*'
            ]
        ]);

        // どのビューでどのクラスが実行されるか定義する方法
        View::composer(
            'profile', 'App\Http\ViewComposers\CommonComposer'
        );

        // クロージャベースのコンポーザを使用する
        View::composer('dashboard', function ($view) {
            //
        });

        // 単純にサービスプロバイダー直下に処理を記載するのもあり
        処理...

    }
}

 

コンポーザー(クラスベースの場合)

<?php

namespace App\Http\ViewComposers;

use Illuminate\View\View;
use App\Repositories\UserRepository;

class CommonComposer
{
    /**
     * 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('aaa', 'bbb')
           
->with('ccc', 'ddd');
    }
}

 

composeの実行タイミング

View::composer(...)はViewのレンダリング後に実行される。

View::creator(...)を使用するとレンダリング前に実行される。

例えばAuth::check()の値はcreatorを使用しなければ正しい真偽値が取得できないといった事例がある。

 

子ページ
子ページはありません
同階層のページ
  1. インストールと設定
  2. クイックスタート & チュートリアル(初心者向け)
  3. クイックスタート & チュートリアル(中級者向け)
  4. ルーティング
  5. Bladeテンプレート(ビュー/レイアウト)
  6. コントローラー
  7. マイグレーションとテーブル定義
  8. データベースの設定
  9. Eloquentモデル (ORM)
  10. SQLとクエリビルダー
  11. バリデーション
  12. .envファイルの設定値へのアクセス
  13. 動作環境による分岐処理
  14. configフォルダ配下の設定値へのアクセス
  15. assetヘルパーを利用したpublicフォルダへのアクセス
  16. storageフォルダへのアクセス
  17. アプリケーション名の変更
  18. メンテナンス
  19. ログイン画面(認証システム)の作成
  20. ログインの必須化
  21. ログインユーザー情報の取得
  22. ルートの認証化
  23. 本番サーバーへのデプロイ方法
  24. 多言語化
  25. csrf_field
  26. ファイルのダウンロード
  27. CSVのアップロードおよび読み込み(maatwebsite/excel)
  28. ページタイトルの設定
  29. コマンド一覧
  30. エラー一覧
  31. SQLの実行ログ出力方法
  32. キャッシュのクリア
  33. Selectの結果の最初もしくは最後に任意の値を追加する方法
  34. ajaxでPOST通信する際の注意点
  35. ソーシャルログインの実装
  36. セッション情報の確認
  37. ログイン、ユーザー登録、パスワードリセット後のリダイレクト先の変更方法
  38. redirectやreturn viewにメッセージを付与する方法
  39. クッキー(cookie)の設定と取得
  40. クラスの再読み込み
  41. csrfの有効時間を変更する方法
  42. ViewComposerを用いてviewに共通の値を付与する方法
  43. View::shareを用いて共通の値を各ビューに渡す方法
  44. ミドルウェアを用いた処理の共通化
  45. Middleware内でAuth::check()などを使用する方法
  46. Controller以外でリダイレクトする方法
  47. セッションの値の取得/保存/更新/削除
  48. $requestの値を変更する方法
  49. 常時SSL化
  50. ページング(ページネーション)をする方法
  51. vue.jsとの連携
  52. Vue.jsと連携するSPA実行環境構築
  53. .envの値をvue.jsで参照する方法
  54. vue.jsを本番環境にリリースする方法

最近の質問

コメント一覧

    No.11 | guest | 2020-03-24 21:28:13

    Methadone Clinic Near Me Alcohol Rehab Centers <a href="http://aaa-rehab.com">Drug Rehab Near Me</a> Drug Rehab Near Me Drug Treatment Rehab http://aaa-rehab.com JamesTop

    No.10 | guest | 2019-12-28 04:03:06

    Astonishingly user friendly site. Immense information readily available on few clicks on. homemade ways to remove wrinkles femin plus gdzie kupic atrafen opinions femin plus opinioni what does the morning erection result from http://baraita.net/vialafil/

    No.9 | guest | 2019-12-21 22:44:47

    say thanks to a lot for your web site it aids a lot. http://potencja-tabletki.eu/ http://tratarea-impotentei-ro.eu/zevs.html http://rezeptfreiepotenzmittel2017.ovh/deseo.html http://penisverlangerung-pillen-de.eu/Phyton-Gel.html http://rezeptfreiepotenzmittel2017.ovh/ http://www.szybkie-odchudzanie-tabletki.eu/dlaczego-najskuteczniejsze-tabletki-na-odchudzanie-sa-takie-drogie/

    No.8 | guest | 2019-12-18 22:45:40

    I merely wanted to provide you with a quick heads up! Besides that, fantastic site! https://www.ernest.ca

    No.7 | guest | 2019-12-06 01:25:12

    It is appropriate time to make a few plans for the future and it is time to be happy. http://www.octeaujoaillier.com

    No.6 | guest | 2019-12-01 07:49:00

    Great article! Thank you :) http://www.heysenpai.com/blog/62280/entrepreneur-general-longueuil/

    No.5 | guest | 2019-11-27 15:05:18

    I am sure this article has touched all the internet users, its really really pleasant piece of writing on building up new blog https://checkersmoda.com

    No.4 | guest | 2019-11-26 14:07:21

    It?s the best time to make some plans for the long run and it is time to be happy. http://www.octeaujoaillier.com

    No.3 | guest | 2019-11-17 13:56:37

    around regret cheap viagra online without prescription direct replacement new cut [url=http://www.vagragenericaar.org/]cheap viagra usa without prescription[/url] super tour however town http://www.vagragenericaar.org/ tonight bill http://www.vagragenericaar.org/

    No.2 | guest | 2019-10-24 17:08:57

    Hey very interesting blog! https://Www.Standardoysterco.com/

    No.1 | guest | 2019-05-05 08:06:10

    Hi there friends, fastidious paragraph and nice arguments commented at this place, I am genuinely enjoying by these. http://www.se7Enbites.com/