【发布时间】:2012-02-27 23:29:05
【问题描述】:
我习惯于使用 Zend Framework 进行部分渲染。在此渲染中,调用了相应的操作,我从渲染中获取了输出。
现在,有没有办法用 YII 做类似的事情? 我正在向一个控制器/动作发出请求,它是几个计算的报告。由于每个报告的计算组合都不相同,因此我为每个计算创建了一个控制器。每个控制器都有一个动作,称为报告,正在执行计算。此报告操作使用数据库中的数据。有没有办法生成具有多个视图的页面? (每个计算一个)
【问题讨论】:
我习惯于使用 Zend Framework 进行部分渲染。在此渲染中,调用了相应的操作,我从渲染中获取了输出。
现在,有没有办法用 YII 做类似的事情? 我正在向一个控制器/动作发出请求,它是几个计算的报告。由于每个报告的计算组合都不相同,因此我为每个计算创建了一个控制器。每个控制器都有一个动作,称为报告,正在执行计算。此报告操作使用数据库中的数据。有没有办法生成具有多个视图的页面? (每个计算一个)
【问题讨论】:
你在 Yii 中也有 renderPartial,所以这应该不是问题。只需以允许您重用它们的方式构建您的方法(操作)。 PS:renderPartial 的第三个参数使您能够获得返回的输出而不是打印。
【讨论】:
有一个控制器函数,它调用不同的函数来获取各种计算以获取数据,然后将其解析到模板中,然后您可以将它们解析为部分。
在控制器中
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'])); ?>
【讨论】:
我刚刚在我的基本 Controller 类中添加了一个 public property $data。然后在每个操作中,我使用$this->data 将变量发送到视图。如果我需要从另一个视图文件渲染一些视图文件,我也使用$this->data
【讨论】:
您也可以为此目的使用 Yii 小部件。
【讨论】: