0

我制作了一个将在整个网站中显示的页脚元素。

此页面的内容需要填充来自某个模型的数据,在显示的每个页面上。

$sponsors = $this->Sponsor->find('all',
        array('条件' => 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 回答