【问题标题】:Render multiple actions (with views) in Yii在 Yii 中渲染多个动作(带有视图)
【发布时间】:2012-02-27 23:29:05
【问题描述】:

我习惯于使用 Zend Framework 进行部分渲染。在此渲染中,调用了相应的操作,我从渲染中获取了输出。

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

【问题讨论】:

    标签: view yii render


    【解决方案1】:

    你在 Yii 中也有 renderPartial,所以这应该不是问题。只需以允许您重用它们的方式构建您的方法(操作)。 PS:renderPartial 的第三个参数使您能够获得返回的输出而不是打印。

    【讨论】:

    • 我用来自 Yii 的 renderPartial 进行了尝试,但似乎我没有执行此操作。该应用程序只会向我显示渲染视图而不处理操作。还是我错了? (请告诉我我错了,所以我的问题解决了:-p)
    【解决方案2】:

    有一个控制器函数,它调用不同的函数来获取各种计算以获取数据,然后将其解析到模板中,然后您可以将它们解析为部分。

    在控制器中

    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'])); ?>
    

    【讨论】:

    • 有趣。在您的示例代码中,不同的计算是否在同一个控制器中?我可以将它们放在多个控制器中吗?怎么样?
    • 是的,您可以编写可供多个控制器使用的可重用函数。例如,一个新动作也可以调用 $this->holidayCal();获取该控制器所需的信息。
    • 我对我的问题做了一些重新思考,我认为计算应该进入模型。不在控制器的操作中。
    【解决方案3】:

    我刚刚在我的基本 Controller 类中添加了一个 public property $data。然后在每个操作中,我使用$this-&gt;data 将变量发送到视图。如果我需要从另一个视图文件渲染一些视图文件,我也使用$this-&gt;data

    【讨论】:

      【解决方案4】:

      您也可以为此目的使用 Yii 小部件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-20
        • 2016-07-18
        • 2013-04-02
        • 2013-12-06
        • 1970-01-01
        • 2012-06-24
        相关资源
        最近更新 更多