0

Web サイト全体に表示されるフッター要素を作成しました。

このページのコンテンツは、表示されるすべてのページで、特定のモデルからのデータで満たされる必要があります。

$sponsors = $this->Sponsor->find('all',
        array('conditions' => array("NOT" => array("Sponsor.logo_id" => null))));

しかし、これを定義するのに最適な場所はどこでしょうか? 私は app_controler で考えましたが、その方法は私には明確ではありません。

4

2 に答える 2

2

あなたAppControllerbeforeFilterまたはおそらくbeforeRender(私は実際に違いに気づいたことはありません); AppControllerモデルにアクセスできることを確認してくださいSponsor

// app_controller.php
function beforeFilter() {
    parent::beforeFilter();
    $this->loadModel('Sponsor');
    $this->Sponsor->recursive = -1; // adjust to return more/less data
    $sponsors = $this->Sponsor->find('all',
        array('conditions' => array("NOT" => array("Sponsor.logo_id" => null))));
    $this->set('sponsors', $sponsors);
}

$sponorsどのビューからでもアクセスできるようになりました。

また、データを要素に配置し、適切な時間キャッシュして、データベースに常にクエリを実行する必要がないようにすることをお勧めします (ページの読み込みやその他の集中的なクエリなどの他の要因によって異なります)。

于 2012-06-14T13:25:08.890 に答える
0
  • 要素フォルダーに要素を作成し、そこに footer.ctp ファイルを作成できます。
  • <?php echo $this->element('footer'); ?>次に、 Layouts/default.ctp ファイルに追加します

このようにして、すべてのページでフッターが読み込まれます。これはエレガントな方法で、ヘッダー、ページネーションなどの Elements フォルダーにも他のものを配置できます。

于 2013-04-09T06:58:22.233 に答える