フラグに応じて、製品メディア (写真またはビデオ) を含むビューを表示する CakePHP アプリケーションがあります。これらの「小さなビュー」を他のいくつかの目的に使用したいので、再利用のために「ケーキ」コンポーネントのようにする必要があります。
Cake の規則で使用することをお勧めするもの (生のinclude('')
コマンドを使用しない)
誰かがこれに出くわした場合に備えて、ここに情報を用意しておくために、CakePHP のバージョンによって解決策が異なることに注意することが重要です。
$this->renderElement('display', array('flag' => 'value'));
あなたのビューで、次に/app/views/elements/
というファイルを作成できますdisplay.thtml
。ここ$flag
には、渡したものの値があります。
$this->element('display', array('flag' => 'value'));
あなたのビューで、次に/app/views/elements/
というファイルを作成できますdisplay.ctp
。ここ$flag
には、渡したものの値があります。
requestAction()
これもオプションですが、キャッシュを使用せずに実行すると、通常のアクションのすべての手順を実行する必要があるため、パフォーマンスが大幅に低下する可能性があります。
コントローラー (この例では posts コントローラー)。
function something() {
return $this->Post->find('all');
}
Elements ディレクトリ (app/views/element) で、posts.ctp というファイルを作成します。
posts.ctp で:
$posts = $this->requestAction('posts/something');
foreach($posts as $post):
echo $post['Post']['title'];
endforeach;
次に、あなたの見解で:
<?php echo $this->element('posts'); ?>
これは主に CakePHP の本から引用したものです: Creation Reusable Elements with requestAction
requestAction の使用は非常にコストがかかると思いますので、キャッシングを検討することをお勧めします。
CakePHP 2.x の場合
Cake 2.x の新機能は、特定のビューを拡張する機能です。したがって、要素は再利用可能なコードを少し持つのに最適ですが、ビューを拡張するとビュー全体を再利用できます。
詳細/より良い情報については、マニュアルを参照してください
要素は、呼び出し元のビューがアクセスできるのと同じデータにアクセスできるようにする場合に機能します。
埋め込みビューに独自のデータ セットへのアクセスを許可する場合は、requestAction()
. これにより、他の方法ではスタンドアロンになる本格的なビューを埋め込むことができます。