CakePHP Cellを使う

Cellとは

小さなMVCを作ることができるCakePHP3から実装された新機能です。

CakePHP 3.0 新機能Cellを試してみた

こちらの記事で「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);
    }
}