2012-02-06 7 views
3

私は部分レンダリングを行うことができるZend Frameworkを使用していました。このレンダリングでは、対応するアクションが呼び出され、レンダリングからの出力が取得されます。Yiiで複数のアクション(ビュー付き)をレンダリングする

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

答えて

3

は、それはあなたがしてパーシャルにこれらを解析することができ、テンプレートにこれを解析し、その後、様々な計算がデータを取得するために取得するために別の関数に呼び出されていたものでコントローラ機能を持っています。ビュー

<?php $this->renderPartial('//cal/_finance_summary', array('financeData'=>$data['finance'])); ?> 
    <?php $this->renderPartial('//cal/_holioday_summary', array('holidayData'=>$data['holiday'])); ?> 
+0

面白いです。あなたのサンプルコードでは、異なる計算が同じコントローラにありますか?私は複数のコントローラでそれらを持つことができますか?どうやって? – koko

+0

はい、あなたは複数のコントローラで使用することができ、再利用可能な関数を書くことができます。例えば、新しいアクションは$ this-> holidayCal()を呼び出すこともできます。そのコントローラーに必要な情報を取得します。 –

+0

私は私の問題のいくつかの見直しを行なったし、私は計算がモデルに行くべきだと思います。コントローラーの操作ではありません。 – koko

1

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

+0

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

0

でコントローラ

public function actionCal() 
{  
    $data = array(); 
    $data['finance'] = $this->financeCal(); 
    $data['holiday'] = $this->holidayCal();        
    $this->render('calculation', array('data'=>$data)); 
} 

は、私はちょうど私の基本コントローラクラスにpublic property $dataを追加しました。そして、各アクションで私は$this->dataを使ってビューに変数を送ります。そして、私は別のビューファイルからいくつかのビューファイルをレンダリングする必要がある場合、私はまた、あなたは、この目的のためのYiiウィジェットを使用することができます。また$this->data

0

を使用しています。

関連する問題