Yiiで複数のアクション(ビュー付き)をレンダリングする

私は部分レンダリングを行うことができるZend Frameworkを扱うことに慣れています。このレンダリングでは、対応するアクションが呼び出され、レンダリングからの出力が取得されます。

さて、このようなやり方もありますか? 私はいくつかの計算のレポートであるコントローラ/アクションへのリクエストを作成しています。計算の組み合わせはすべてのレポートで同じではないので、私は各計算のためのコントローラを作成しました。すべてのコントローラには、計算が実行されているレポートというアクションがあります。このレポートアクションでは、データベースのデータが使用されます。複数のビューを持つページを生成する方法はありますか? (計算ごとに1つ)

3

4 答え

データを取得するためのさまざまな計算を行うために、別の関数に呼び出された1つのコントローラ関数を持って、テンプレートに解析します。次に、これらをパーシャルに解析できます。

コントローラ内

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'])); ?>
3
追加された
はい、複数のコントローラで使用できる再利用可能な関数を書くことができます。例えば、新しいアクションは$ this-> holidayCal()を呼び出すこともできます。そのコントローラーに必要な情報を取得します。
追加された 著者 Chris Herring,
面白い。あなたのサンプルコードでは、異なる計算が同じコントローラにありますか?私は複数のコントローラでそれらを持つことができますか?どうやって?
追加された 著者 koko,
私は自分の問題についていくつか考え直しました。私は計算がモデルに入るべきだと思います。コントローラーの操作ではありません。
追加された 著者 koko,

あなたはYiiのrenderPartialも持っているので、これは問題ではありません。メソッド(アクション)を再利用できるように構造化するだけです。 PS:renderPartialの3番目のパラメータは、出力する代わりに出力を返すことができます。

1
追加された
私はYiiのrenderPartialで試してみましたが、私はそのアクションをやっていないようです。アプリケーションは、アクションを処理せずにレンダリングされたビューのみを表示します。または私は間違っていますか? (私が間違っていると教えてください。私の問題は解決されます:-p)
追加された 著者 koko,

I have just added a public property $data to my base Controller class. Then in each action I use $this->data to send variables to views. And if I need to render some view file from another view file, I also use $this->data

0
追加された

また、Yiiウィジェットをこの目的のために使用することもできます。

0
追加された