我需要一些反馈来确保我没有完全错过 CakePHP/MVC 的要点。
我正在用 CakePHP 设计一个 mini-cms——本质上是一个相册。我希望在每一页上都有一个标准的样板下拉菜单。自然,当用户删除和添加相册时,菜单需要是动态的。
View::actionRequest()
我的目标:构建与(即,不是视图回调控制器,而是让控制器在渲染之前将设置变量推送到视图类)相反方向移动的东西。我的理解是这View::requestAction()
不是很优雅,而是很慢。
这是包含菜单关键字的表格的模型。app/Model/ModelItem.php
class MenuItem extends AppModel {
public function buildMainMenu() {
return $this->find('all');
}
}
因为我到处都想要它,所以我把电话放在AppController
class AppController extends Controller {
public function beforeFilter() {
$this->loadModel('MenuItem');
$this->set('mainMenuItems',$this->MenuItem->buildMainMenu());
}
}
这是一个元素,它被转储到我的 CSS 的默认布局顶部 - 元素文件:app/View/Element/navigation.ctp
- 布局:app/View/Element/Layout/default.ctp
<ul id="navigation">
<?php
foreach($mainMenuItems as $item) {
echo "<li>".$item['MenuItem']['name']."</li>";
}
?>
</ul>
最后,我得到了一个可爱的、列表中所有项目的项目符号列表。我完全把这件事搞砸了吗?难道我都错了吗?我不知道。