15

フラグに応じて、製品メディア (写真またはビデオ) を含むビューを表示する CakePHP アプリケーションがあります。これらの「小さなビュー」を他のいくつかの目的に使用したいので、再利用のために「ケーキ」コンポーネントのようにする必要があります。

Cake の規則で使用することをお勧めするもの (生のinclude('')コマンドを使用しない)

4

7 に答える 7

9

誰かがこれに出くわした場合に備えて、ここに情報を用意しておくために、CakePHP のバージョンによって解決策が異なることに注意することが重要です。

CakePHP 1.1 の場合

$this->renderElement('display', array('flag' => 'value'));

あなたのビューで、次に/app/views/elements/というファイルを作成できますdisplay.thtml。ここ$flagには、渡したものの値があります。

CakePHP 1.2 の場合

$this->element('display', array('flag' => 'value'));

あなたのビューで、次に/app/views/elements/というファイルを作成できますdisplay.ctp。ここ$flagには、渡したものの値があります。


どちらのバージョンでも、要素は、ビューがアクセスできるすべてのデータ + 渡された値にアクセスできます。さらに、誰かが指摘したように、requestAction()これもオプションですが、キャッシュを使用せずに実行すると、通常のアクションのすべての手順を実行する必要があるため、パフォーマンスが大幅に低下する可能性があります。

于 2008-09-18T17:37:26.810 に答える
7

コントローラー (この例では 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 の使用は非常にコストがかかると思いますので、キャッシングを検討することをお勧めします。

于 2008-09-28T11:57:50.363 に答える
5

CakePHP 2.x の場合

Cake 2.x の新機能は、特定のビューを拡張する機能です。したがって、要素は再利用可能なコードを少し持つのに最適ですが、ビューを拡張するとビュー全体を再利用できます。

詳細/より良い情報については、マニュアルを参照してください

http://book.cakephp.org/2.0/en/views.html#extending-views

于 2012-09-19T15:56:16.667 に答える
1

要素は、呼び出し元のビューがアクセスできるのと同じデータにアクセスできるようにする場合に機能します。

埋め込みビューに独自のデータ セットへのアクセスを許可する場合は、requestAction(). これにより、他の方法ではスタンドアロンになる本格的なビューを埋め込むことができます。

于 2008-09-18T17:42:10.513 に答える
0

これらの「小さなビュー」を他のいくつかの目的に使用したいので、再利用のために「ケーキ」コンポーネントのようにする必要があります。

ここで説明されているように、これは「ヘルパー」で行われます。しかし、それが本当にあなたが望んでいるものかどうかはわかりません。「要素」の提案も正しいようです。それはあなたが達成しようとしていることに大きく依存します。私の2セント...

于 2008-09-25T05:47:10.960 に答える