我是CakePHP的新手并且没有得到任何帮助
我有3个不同的控制器
1:: MenusController
2:: CategoriesController
3::ProductsController
在我的主页header
我想要显示菜单,sidebar
我希望显示属于默认类别的所有类别和content
区域产品。
我怎么能这样做?
答案 0 :(得分:3)
您正在寻找使用requestAction()的View Elements。
您的视图将有3个元素调用您提到的每个控制器。
这个例子来自这本书:
控制器动作
public function index() {
$posts = $this->paginate();
if ($this->request->is('requested')) {
return $posts;
} else {
$this->set('posts', $posts);
}
}
然后,在您的视图中,您将拥有类似
的内容<h2>Latest Posts</h2>
<?php
$posts = $this->requestAction(
'posts/index/sort:created/direction:asc/limit:5'
);
?>
<ol>
<?php foreach ($posts as $post): ?>
<li><?php echo $post['Post']['title']; ?></li>
<?php endforeach; ?>
</ol>
答案 1 :(得分:1)
在CakePHP 3中,使用View Cells处理这种情况。 请参阅文档:http://book.cakephp.org/3.0/en/views/cells.html
View Cells允许视图具有类似控制器的逻辑,以生成要呈现的数据,而不会破坏MVC模型。
您可以使用“查看单元格”生成类别列表,而不会触及requestAction调用的性能。
答案 2 :(得分:-1)
我认为处理它的最简洁方法是创建一个组件或帮助程序并在视图上调用它。
可以在此处找到构建自定义组件:
http://book.cakephp.org/2.0/en/controllers/components.html#creating-a-component
建筑助手也可以在这里找到: