Laravel 7.x〜コンポーネント(Components)で部品化

2020年8月7日

PHP

Laravel 7.xから導入されたクラスベースのコンポーネント機能を利用してみます。

 

本記事では、単純に「データベースのテーブルからデータを取得し表示させた部分」をコンポーネント化、すなわち部品化して作成してみます。

 

適当なテーブルを用意しておきます。今回利用するのは下記のようなbooksテーブルです。

モデルの作成自体は下記ページをご覧ください。

CRUDを実装する

 

 

次のコマンドで、クラスベースでのコンポーネントを作成します。

 

各Componentsディレクトリおよび2つのファイルが生成されるので、それぞれ下記のように追記します(ハイライト部分)。

app/View/Components/BookList.php

resources/views/components/book-list.blade.php

 

 

app/View/Components/BookList.php

30〜33行目

booksテーブルから全件のデータを取得しています。booklistという名前のメソッド名は次で説明するビューテンプレートにおいてそのまま利用できます。

 

 

resources/views/components/book-list.blade.php

ビューテンプレートです。コンポーネントにおいて定義したメソッドbooklistと一致する変数からbooksテーブルのレコードを取得しています。

 

 

コンポーネントを表示させるにはコンポーネントクラス(今回はBookList)のケバブケース(book-list)にプレフィックスとしてx-を付けたタグを利用します。下記タグを適当なBladeテンプレートに貼り付けるとbooksテーブルのtitleが表示されます。

 

 

タグからコンポーネントへ値を渡すことができます。下記ではlimitという属性を用意し、2という数値を指定しています。

 

次にコンポーネントクラスを次のように修正します(ハイライト部分)。

app/View/Components/BookList.php

コンストラクタにおいてlimitを定義し、booklistメソッドにおいてbooksテーブルから取得するレコード数として指定しています。

 

以上で下記のように2件のみが表示されるのが確認できます。

 

 

 

 

関連ページ

Bladeによるレイアウト入門

 

 

 

参照ページ


 

Laravel 7.x Bladeテンプレート

 

 

 

LINEで送る
Pocket

定番本
定期本
 
Copyright © 2020 思考の葉 All Rights Reserved.  プライバシーポリシー