renderElementで使いたい変数があったら

まっちー

まっちー

ちょっと前に、renderElementを使うとelementsフォルダに入っているファイルをview内で読み込めるようなことを書いた。それについて一つ知ったことがあったので、メモ。

// index.ctp

<?php foreach($data as $val) : ?>

 € € € € <?php echo $this->renderElement('program') ?>

<?php endforeach ?>

// program.ctp

<?php echo $val ?>

例えばこんな感じでindex.ctpというファイルと、elementsフォルダの中にprogram.ctpというファイルがあったとする。

僕はこう書けばforeachの$valがprogram.ctp内でもそのまま使えるのかと思っていたのだけど、どうやらそれはダメらしい。controllerでsetした変数ならそのまま使えるけれど、上のような場合は、renderElementの第2引数にエレメントで使う変数を定義しておく必要がある。

// index.ctp

<?php foreach($data as $val) : ?>

 € € € € <?php echo $this->renderElement('program', array('val' => $val) ?>

<?php endforeach ?>

// program.ctp

<?php echo $val ?>

これでOK。今はarrayの中身が両方ともvalになっているけど、別にこれはいつでも同じになるわけじゃない。要は↓こういうこと。

// index.ctp

<?php foreach($data as $val1) : ?>

 € € € € <?php echo $this->renderElement('program', array('val2' => $val1) ?>

<?php endforeach ?>

// program.ctp

<?php echo $val2 ?>

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

プログラマのまっちーです。酒が大好きです。ある一定量のお酒を飲むと壊れたレディオモードに入り、同じことを繰り返す癖があります。宜しくお願いいたします。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL