在Views / site / index中包含另一个控制器的视图

时间:2013-09-27 06:38:04

标签: php templates yii

我无法弄清楚如何解决我面临的这个问题。好吧,基本上我有一个默认的view / site / index.php视图文件,它正在生成主页。现在我构建了两个独立的模型及其关联的控制器和视图。我想在默认主页视图中包含控制器的那些视图,即views / site / index.php。它有意义吗?

所以我的主页分为几个部分。页眉和页脚部分在整个站点中是相同的,这就是我将它们写在单独文件下的/ themes / brushed / layouts文件夹中的原因。这些都很好。

我正在谈论的两个控制器被命名为FrontPageCategoriesController.php和TopProductsController.php。他们正在各自的视图文件夹中生成单独的视图文件,即index.php。

如何将这些视图文件(index.php)包含到主站点视图文件(views / site / index.php)中。我只是不能使用include_once()包含这些文件,因为数据是由其控制器生成的。那么实现这个目标的方式是什么?

任何人都可以帮我解决这个问题。提前致谢。

1 个答案:

答案 0 :(得分:0)

首先,您应该将数据生成从控制器移动到模型。控制器应该只将输入参数连接到模型并将其传递给视图。原因是你想重用模型,而不是控制器。请记住,控制器绑定到页面请求,而模型不是。

然后只需使用您的模型来获取数据,然后使用renderPartial来呈现数据。例如:

$categories = FrontPageCategories::model()->findAll();
$this->renderPartial('/frontPageCategories/index', array(
    'categories' => $categories,
));

事实上,如果它们不依赖于当前页面中的某些参数,则可以直接在视图中从模型中获取类别。

实际上,您也应该使用renderPartial作为页眉和页脚。