やったこと

webサービスを作るときに考えたことを垂れ流します

【CakePHP3】Cellを使って画面表示する!

CakePHP3の「Cell機能」の使いかたです。

「Cell」を使うとテーブルを呼び出したり、いろいろデータを加工できたりして、「Element」よりもリッチな画面表示ができます。

以下手順です。

①アクション部分を作成
「/View/Cell/Hogege/」というディレクトリを新しく掘って、HogegeCell.phpというファイルを新しく作ります。

ここに一連のアクションに相当する処理を記述します。

<?php
namespace App\View\Cell;

use Cake\View\Cell;

class HogegeCell extends Cell
{
    public function test1()
    {
      $this->loadModel('Fugaga'); //テーブルを呼び出し
      $datas = $this->Fugaga->find()->all();

      $this->set('datas', $datas); //テンプレートに変数を渡す
      $this->template = 'test1'; //テンプレート名をセット
    }

    public function test2($hikisuu)
    {
      $this->loadModel('Piyoyo'); //テーブルを呼び出し
      $datas = $this->Piyoyo->find()->all();

      $this->set('datas', $datas); //テンプレートに変数を渡す
      $this->template = 'test2'; //テンプレート名をセット
    }
}


②Cell用のテンプレートを作成
「/Template/Cell/Hogege/」というディレクトリを新しく掘って、「test1.ctp」や「test2.ctp」というファイルを新しく作ります。

ここに一連のテンプレート(画面表示部分)に相当する処理を記述します。

<?php
//test1.ctpの内容
?>

<p>fugagaテーブルの内容を表示!</p>

<?php foreach ($datas as $data): ?>
<p><?= $data->my_name ?></p>
<?php endforeach; ?>
<?php
//test2.ctpの内容
?>

<p>piyoyoテーブルの内容を表示!</p>

<?php foreach ($datas as $data): ?>
<p><?= $data->my_name ?></p>
<?php endforeach; ?>


③お好きなテンプレート内でCellを呼び出して出力する
お目当てのテンプレート内で、Cellを呼び出して画面表示を出力します。

<!-- Fugagaの画面表示 -->
<?= $this->cell('Hogege::test1');?>

<!-- Piyoyoの画面表示 -->
<?= $this->cell('Hogege::test2', ['引数も渡せるよ!']);?>


もっと詳しい情報が見たい人はCakePHP3公式ページをどうぞ!
http://book.cakephp.org/3.0/en/views/cells.html


以上!