17
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Organization

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');
  }
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
17
Help us understand the problem. What are the problem?