【CakePHP3】エレメントを使って簡単にビュー表示!
CakePHP3の画面レイアウト処理で「エレメント」の機能を使うと便利です。
エレメントとは、画面デザインのパーツを再利用できるように定義できる機能です。
例えば「display.ctp」で以下のような画面レイアウトを記述していたとします。
<?php //テンプレートファイル「display.tcp」 if ($is_login){ $login_str = "ログイン中!"; }else{ $login_str = "ログアウト中!"; } ?> <div class="masthead"> <p>ヘッダーだよ!(<?= $login_str ?>;)</p> </div><!-- masthead --> <div class="content"> <p>コンテンツだよ!</p> </div><!-- content --> <div class="footer"> <p>フッターだよ!</p> </div><!-- footel -->
このヘッダー部分(masthead)を他のctpファイルでも使い回したい。
そんなときは「/src/Template/Element/」ディレクトリに「masthead.ctp」を作成しましょう。
これがエレメントとして機能します。
<?php //テンプレートファイル「masthead.ctp」 ?> <div class="mastheadt"> <p>ヘッダーだよ!(<?= $login_str ?>;)</p> </div><!-- masthead -->
元の「display.ctp」ファイルでは、以下のようにしてエレメントを呼び出します(引数で変数を渡すこともできます)
<?php //テンプレートファイル「display.tcp」 if ($is_login){ $login_str = "ログイン中!"; }else{ $login_str = "ログアウト中!"; } ?> <?php echo $this->element('masthead', ['login_str'=>$login_str]); ?> <div class="content"> <p>コンテンツだよ!</p> </div><!-- content --> <div class="footer"> <p>フッターだよ!</p> </div><!-- footel -->
こうやってエレメントを使いまわすとコードがずいぶんシンプルになりますね。
以上でう!