Help us understand the problem. What is going on with this article?

CakePHP3新機能 View Cell の利用手順

More than 1 year has passed since last update.

公式ドキュメント

http://book.cakephp.org/3.0/ja/views/cells.html

利用手順

1. bakeを実行

プロジェクトルートで以下のコマンドを実行すると、必要なファイルが生成されます。

bin/cake bake cell hoge

テストコードも生成してくれるので、きちんと活用していきましょう。

[root@vagrant-centos65 test-project]# bin/cake bake cell hoge
Welcome to CakePHP v3.3.6 Console
---------------------------------------------------------------
App : src
Path: /var/www/test-project/src/
PHP : 7.0.11
---------------------------------------------------------------

Creating file /var/www/test-project/src/Template/Cell/Hoge/display.ctp
Wrote `/var/www/test-project/src/Template/Cell/Hoge/display.ctp`

Creating file /var/www/test-project/src/View/Cell/HogeCell.php
Wrote `/var/www/test-project/src/View/Cell/HogeCell.php`

Baking test case for App\View\Cell\HogeCell ...

Creating file /var/www/test-project/tests/TestCase/View/Cell/HogeCellTest.php
Wrote `/var/www/test-project/tests/TestCase/View/Cell/HogeCellTest.php`

2. TemplateにCellの呼び出しコードを配置

TemplateにCellを配置しましょう。
あとは表示したい内容に合わせて編集していくだけです。

Template/Pages/home.ctp
<?= $this->cell('Hoge')->render() ?>

3. View\Cellの編集

View\Cell以下に以下のようなクラスが生成されているので、Controllerと同じ感覚で編集します。
$_validCellOptionsについては、補足資料を参照してください。

Cellを呼び出す際はdisplayメソッドが呼び出されます。
公式ドキュメントにはdisplayメソッド以外を呼び出す方法も記述されていますが、
ただでさえMVCからMVCを呼ぶという複雑なことをしているので、避けたほうが無難でしょう。

<?php
namespace App\View\Cell;

use Cake\View\Cell;

/**
 * Hoge cell
 */
class HogeCell extends Cell
{

    /**
     * List of valid options that can be passed into this
     * cell's constructor.
     *
     * @var array
     */
    protected $_validCellOptions = [];

    /**
     * Default display method.
     *
     * @return void
     */
    public function display()
    {
        // loadModelも使える
        $hoge_entity= $this->loadModel('Hoges')->get(1);

        // controller同様、setメソッドで登録する
        $this->set('hoge_entity', $hoge_entity);
    }
}

4. Template\Cellの編集

bakeを叩いた直後の状態では、Template\Cellにdisplay.ctpが格納されています。
こちらを通常のTemplateと同様に編集していきます。

Template\Cell\display.ctp
<div><?= $hoge_entity->id ?></div>
result
<div>1</div>

補足資料. Cellメソッドの詳細

http://qiita.com/morisuke/items/c7b8fda6588108a55f3f

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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