CakePHP
cakephp3

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

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

前提条件

  • CakePHP 3.0(beta1)を利用(2014/09/10)

Cellとは

・Controller付きのElementのようなもの?

 既存のCakePHPだとホームページのサイドバーに新着情報を表示しようと思うとAppControllerのbeforeFiltter辺りにロジックを追加して毎回実行できる状態にするかrequestActionを使う必要があった。

 ※CellはCakePHP2系までのrequestActionの強化版みたいなもの
 

準備

・Cellの作成はbakeから行うことが出来る。

// HogeがCell名
php bin/cake.php bake cell Hoge

コマンドを実行することで以下の3ファイルが作成される

・src/Template/Cell/Hoge/display.ctp // Viewファイル

・src/View/Cell/HogeCell.php // CellのControllerのようなもの

・Test/TestCase/View/Cell/HogeCellTest.php // テスト

使い方

・elementと同じような使い方である。
 適当なViewファイルでcellを実行するだけ。

<?= $this->cell("Hoge"); ?>

※これを実行するとHogeCell.phpdisplayメソッドが実行されてdisplay.ctpがレンダリングされる

その他

・Cellの中に複数のアクションを作ることが出来る

// アクションを追加
class HogeCell extends Cell {
    function display() {
        // デフォルトのアクション
    }

    function display2() {
        // 追加アクション
    }
}

// ctpからの実行
<?= $this->cell("Hoge::display2"); ?>

・Controllerからも実行することが出来る

use Cake\View\CellTrait;  // 追加
class UsersController extends AppController {
  use CellTrait; // 追加

  function index() {
    // cellの実行(動作はViewで実行した場合と同じ)
    echo $this->cell('Hoge');
  }
}