我习惯使用Zend Framework,我可以在其中进行部分渲染。在这个渲染中,调用相应的动作,我从渲染中获得输出。
现在,有没有办法用YII做这样的事情? 我正在向控制器/动作发出请求,这是几次计算的报告。由于每个报告的计算组合都不相同,因此我为每个计算创建了一个控制器。每个控制器都有一个操作,称为报告,其中正在进行计算。此报告操作使用数据库中的数据。有没有办法生成一个包含多个视图的页面? (每次计算一个)
答案 0 :(得分:3)
有一个控制器函数,它调用不同的函数来获取各种计算以获取数据,然后将其解析为模板,然后可以将这些解析为部分。
在控制器中
public function actionCal()
{
$data = array();
$data['finance'] = $this->financeCal();
$data['holiday'] = $this->holidayCal();
$this->render('calculation', array('data'=>$data));
}
在视图中
<?php $this->renderPartial('//cal/_finance_summary', array('financeData'=>$data['finance'])); ?>
<?php $this->renderPartial('//cal/_holioday_summary', array('holidayData'=>$data['holiday'])); ?>
答案 1 :(得分:1)
你也有Yii中的renderPartial,所以这应该不是问题。只需以允许重用它们的方式构建方法(操作)。 PS:renderPartial的第3个参数使您可以获得返回的输出而不是打印输出。
答案 2 :(得分:0)
我刚刚在我的基础Controller类中添加了public property $data
。然后在每个操作中,我使用$this->data
将变量发送到视图。如果我需要从另一个视图文件渲染一些视图文件,我也使用$this->data
答案 3 :(得分:0)
此外,您可以使用Yii小部件来实现此目的。