CakePHP多个控制器在页面中

时间:2014-09-12 12:01:24

标签: cakephp

我是CakePHP的新手并且没有得到任何帮助

我有3个不同的控制器

1:: MenusController
2:: CategoriesController
3::ProductsController

在我的主页header我想要显示菜单,sidebar我希望显示属于默认类别的所有类别和content区域产品。

我怎么能这样做?

3 个答案:

答案 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/views/helpers.html