我正在尝试在cake php中创建一个菜单,我也可以知道该部分中有多少篇文章,我应该使用手动查询,还是确实存在一些现有的方法呢?
My site menu:
- Works (12)
- Photos (35)
- Stuff (7)
- Contacts
我的问题也是我没有得到如何为每个视图访问这样的数据,这应该是一个主菜单,所以我应该在每个视图中使用它,但如果我把它放在default.ctp
,每个模型都不存在,因为我无法从视图中访问它。
是否存在谈论这个的页面?
答案 0 :(得分:1)
由于这些是彼此无关的独立模型,因此您需要进行手动计数。
$this->Model->find('count');
修改强>
好的,所以看起来你在谈论不同的模特。
如果在菜单中使用它,则表示它将显示在所有页面中。
你有两种方法可以做到这一点。
您可以通过为您申请AppController来完成此操作。基本上,您可以将此代码放在beforeRender方法中,以便在每次呈现请求时运行
function beforeRender() {
App::import('Model', array('Work', 'Photo', 'Stuff'));
$work = new Work();
$workCount = $work->find('count');
//do the same for the other
$this->set('workCount', $workCount);
}
有关回调的详细信息,请查看此内容:http://book.cakephp.org/view/977/Controller-Methods#Callbacks-984
其次,您可以通过帮助程序完成此操作。您可以将相同的代码(位于bforeRender
内)放入帮助程序中,然后可以调用辅助方法。
您可以在此处查看有关创建帮助程序的更多信息:http://book.cakephp.org/view/1097/Creating-Helpers
答案 1 :(得分:0)
CounterCache行为将帮助您: http://book.cakephp.org/view/1033/counterCache-Cache-your-count