Cellとは
小さなMVCを作ることができるCakePHP3から実装された新機能です。
こちらの記事で「ControllerつきのElementのようなもの?」と書かれていてしっくり来ました。
普通のテンプレートファイルのようにメソッドが実行されてからcellが表示されるようになっています。
Helloという名前のCellを作る際は以下のファイルを作成します。
・src/Template/Cell/Hello/display.ctp
・src/View/Cell/HelloCell.php
1つ目のファイルがテンプレートファイルに当たるもので、Elementと同じようなものです。
2つ目のファイルがコントローラーのようなものでdesplay.ctpが表示される前にHelloCellのdisplay関数が呼ばれます。
Cellの使う際はテンプレートファイルに
<?= $this->cell("Hello"); ?>
と書くだけです。
使用例
src/Template/Home
//Cellの呼び出し。第2引数に配列で値を渡せる $name = "hal-bo"; $suffix = "さん"; <?= $this->cell("Hello",[$name, $suffix]); ?>
src/Template/Cell/Hello/display.ctp
<?php <div> <strong>Hello World! $name $suffix!</strong> </div>
src/View/Cell/HelloCell.php
<?php namespace App\View\Cell; use Cake\View\Cell; class HelloCell extends Cell { //呼び出し側の第2引数で渡された要素を引数で受け取る public function display($name, $suffix) { $this->set('name', $name . $suffix); } }