【CakePHP3】Cellを使って画面表示する!
CakePHP3の「Cell機能」の使いかたです。
「Cell」を使うとテーブルを呼び出したり、いろいろデータを加工できたりして、「Element」よりもリッチな画面表示ができます。
以下手順です。
①アクション部分を作成
「/View/Cell/Hogege/」というディレクトリを新しく掘って、HogegeCell.phpというファイルを新しく作ります。
ここに一連のアクションに相当する処理を記述します。
<?php namespace App\View\Cell; use Cake\View\Cell; class HogegeCell extends Cell { public function test1() { $this->loadModel('Fugaga'); //テーブルを呼び出し $datas = $this->Fugaga->find()->all(); $this->set('datas', $datas); //テンプレートに変数を渡す $this->template = 'test1'; //テンプレート名をセット } public function test2($hikisuu) { $this->loadModel('Piyoyo'); //テーブルを呼び出し $datas = $this->Piyoyo->find()->all(); $this->set('datas', $datas); //テンプレートに変数を渡す $this->template = 'test2'; //テンプレート名をセット } }
②Cell用のテンプレートを作成
「/Template/Cell/Hogege/」というディレクトリを新しく掘って、「test1.ctp」や「test2.ctp」というファイルを新しく作ります。
ここに一連のテンプレート(画面表示部分)に相当する処理を記述します。
<?php //test1.ctpの内容 ?> <p>fugagaテーブルの内容を表示!</p> <?php foreach ($datas as $data): ?> <p><?= $data->my_name ?></p> <?php endforeach; ?>
<?php //test2.ctpの内容 ?> <p>piyoyoテーブルの内容を表示!</p> <?php foreach ($datas as $data): ?> <p><?= $data->my_name ?></p> <?php endforeach; ?>
③お好きなテンプレート内でCellを呼び出して出力する
お目当てのテンプレート内で、Cellを呼び出して画面表示を出力します。
<!-- Fugagaの画面表示 --> <?= $this->cell('Hogege::test1');?> <!-- Piyoyoの画面表示 --> <?= $this->cell('Hogege::test2', ['引数も渡せるよ!']);?>
もっと詳しい情報が見たい人はCakePHP3公式ページをどうぞ!
http://book.cakephp.org/3.0/en/views/cells.html
以上!