這在很大程度上取決於你的代碼來生成PDF和EXCEL文件,有幾種方法可以「綁定」這些按鈕來生成文件。
- 在呈現在第一位置
- 使用相同的代碼庫生成該CDataProvider不同的動作網格視圖同樣的動作。
對於第一種情況,你可以傳遞一個參數來告訴它來生成相應的文件的操作:
<?php
public function actionIndex()
{
//Code base to generate the CActiveData provider.
//Check if we are asking for the PDF version
if(isset($_GET["pdf"])){
//Your code to generate the PDF
}elseif (isset($_GET["excel"])) {
//Your code to generate the EXCEL
}else{
//render the view with the Grid
}
}
?>
然後在你的MyGridClass,只需將您的按鈕對應的網址:
//For the pdf
Yii::app()->controller->createUrl('', array('pdf' => '1'));
//For the excel
Yii::app()->controller->createUrl('', array('excel' => '1'));
如果需要,您可以調整此設置以擁有2個單獨的操作。
不,我不想在控制器中編寫代碼。 – Gcaufy
我可以得到數據提供者和列,爲什麼我需要在控制器中編寫代碼?我找到了一種方法來做這個代碼。我覆蓋了CGridView的運行功能,然後我把PDF和Excel代碼放在裏面。那麼在cotroller中沒有代碼,這意味着如果其他人使用此代碼,那麼他不需要在控制器中編寫代碼來導出。無論如何感謝您的回覆。 – Gcaufy