Yii 如何将事件绑定到我的gridview代码(扩展自CGridView)

Yii 如何将事件绑定到我的gridview代码(扩展自CGridView),yii,Yii,我编写了一个类MyGridView,它是CGridView的扩展。 MyGridView将自动在标题中生成两个按钮, 一个是pdf图标,另一个是excel图标。但如何将事件绑定到这两个图标? 因此,我可以使用我的代码根据数据提供者和列为这个CGridView生成PDF或EXCEL PDF导出代码和EXCEL导出代码都准备好了,我只是不知道如何为类绑定服务器端事件这在很大程度上取决于生成PDF和EXCEL文件的代码,有几种方法“绑定”这些按钮以生成文件 与首先渲染栅格视图的操作相同 使用生成CDA

我编写了一个类MyGridView,它是CGridView的扩展。
MyGridView将自动在标题中生成两个按钮, 一个是pdf图标,另一个是excel图标。但如何将事件绑定到这两个图标? 因此,我可以使用我的代码根据数据提供者和列为这个CGridView生成PDF或EXCEL


PDF导出代码和EXCEL导出代码都准备好了,我只是不知道如何为类绑定服务器端事件这在很大程度上取决于生成PDF和EXCEL文件的代码,有几种方法“绑定”这些按钮以生成文件

  • 与首先渲染栅格视图的操作相同
  • 使用生成CDATA提供程序的相同代码库的不同操作
  • 对于第一种情况,您可以向操作传递一个参数,告诉它生成相应的文件:

    <?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
      }
    }
    
     ?>
    

    如果需要,您可以将其调整为有两个单独的操作。

    我可以获取数据提供程序和列,为什么我需要在控制器中编写代码?我找到了一种方法来完成这个代码。我覆盖了CGridView运行函数,然后将PDF和Excel代码放入其中。然后cotroller中没有代码,这意味着如果其他人使用此代码,那么他不需要在控制器中编写代码来导出。无论如何,谢谢你的回复。
    //For the pdf
    Yii::app()->controller->createUrl('', array('pdf' => '1'));
    //For the excel
    Yii::app()->controller->createUrl('', array('excel' => '1'));