在Yii中渲染多个动作(带视图)

时间:2012-02-06 13:41:18

标签: view yii render

我习惯使用Zend Framework,我可以在其中进行部分渲染。在这个渲染中,调用相应的动作,我从渲染中获得输出。

现在,有没有办法用YII做这样的事情? 我正在向控制器/动作发出请求,这是几次计算的报告。由于每个报告的计算组合都不相同,因此我为每个计算创建了一个控制器。每个控制器都有一个操作,称为报告,其中正在进行计算。此报告操作使用数据库中的数据。有没有办法生成一个包含多个视图的页面? (每次计算一个)

4 个答案:

答案 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小部件来实现此目的。