我習慣於使用Zend Framework來處理局部渲染。在這個渲染中,相應的動作被調用,我從渲染中獲得輸出。在Yii中渲染多個動作(帶有視圖)
現在,有沒有辦法像YII一樣做這樣的事情呢? 我正在向控制器/操作發出請求,這是幾次計算的報告。由於每個報告的計算組合都不相同,因此我爲每次計算都創建了一個控制器。每個控制器都有一個操作,稱爲報告,在這裏進行計算。此報告操作使用數據庫中的數據。有沒有辦法用多個視圖生成頁面? (每計算一個)
我習慣於使用Zend Framework來處理局部渲染。在這個渲染中,相應的動作被調用,我從渲染中獲得輸出。在Yii中渲染多個動作(帶有視圖)
現在,有沒有辦法像YII一樣做這樣的事情呢? 我正在向控制器/操作發出請求,這是幾次計算的報告。由於每個報告的計算組合都不相同,因此我爲每次計算都創建了一個控制器。每個控制器都有一個操作,稱爲報告,在這裏進行計算。此報告操作使用數據庫中的數據。有沒有辦法用多個視圖生成頁面? (每計算一個)
有一個控制器函數,它調用了不同的函數來獲取各種計算以獲取數據,然後將其解析爲模板,然後將其解析爲部分。
在控制器
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'])); ?>
您在Yii中也有renderPartial,所以這應該不成問題。只需以允許您重用它們的方式構建您的方法(操作)即可。 PS:renderPartial的第三個參數使您可以獲取返回而不是打印的輸出。
我試過用Yii的renderPartial,但看起來我沒有經過這個動作。該應用只會顯示呈現的視圖而不處理該操作。或者我錯了? (請告訴我我錯了,所以我的問題解決了:-p) – koko 2012-02-06 13:49:56
我剛添加一個public property $data
到我的基Controller類。然後在每個操作中,我使用$this->data
將變量發送到視圖。如果我需要從另一個視圖文件中渲染一些視圖文件,我也使用$this->data
此外,您可以使用Yii小部件實現此目的。
有趣。您的示例代碼中的不同計算是否在同一個控制器中?我可以在多個控制器中使用它們嗎?怎麼樣? – koko 2012-02-06 14:39:52
是的,您可以編寫可供多個控制器使用的可重用函數。例如,一個新的動作也可以調用$ this-> holidayCal();以獲得該控制器所需的信息。 – 2012-02-06 14:47:01
我對我的問題做了一些反思,我認爲計算應該在模型中進行。不在控制器的操作中。 – koko 2012-02-07 08:59:26