我制作了一个页脚元素,将在整个网站上显示。
此页面的内容需要填写来自特定模型的数据,并显示在每个页面上。
$sponsors = $this->Sponsor->find('all', array('conditions' => array("NOT" => array("Sponsor.logo_id" => null))));
但是定义这个的最佳位置在哪里?我在app_controler中想过,但对我来说这样做并不是很清楚。
答案 0 :(得分:2)
在AppController
的{{1}}或可能beforeFilter
中(我从未真正注意到差异);确保您的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);
}
。
最好将数据放入元素并将其缓存一段合适的时间,以避免不断查询数据库(取决于其他因素,如页面加载/其他密集查询等。
答案 1 :(得分:0)
<?php echo $this->element('footer'); ?>
这样每个页面都会加载页脚。这是一种优雅的方式,您可以将其他内容放在Elements文件夹中,如标题,分页等。