如何在yii视图中使用Cdetailview和网格视图,并将该页面导出为pdf和excel

时间:2012-04-05 12:30:09

标签: php yii

我有包含detailview和gridview的视图页面 网格视图应该由detailview数据自动填充。一个重要的事情是详细视图模型和gridview模型不同它们应该从不同的模型中获取并且我没有分配任何关系所以所有都需要manul。 并且视图应该导出为pdf和excel视图。

我的view.php是

   <?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
    'id',
    'invoice_no',
    'invoice_date',
    'dc_no',
    'dc_date',
    'client',
    'total_amount',
    'status',
),
)); ?>

   <?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'invoice-transaction-grid',
'dataProvider'=>$dataProvider->search(),
'filter'=>$model,
'columns'=>array(
    //'invoice_id',
//'invoice_no',
    'dc_no',
    'client',
   /*array(
    'name'=>'client',
        'value'=>'Client::model()->findByPk($data->client)->Client_name',

   'filter'=>CHtml::listData(Client::model()->findall(),'Client_id','Client_name'),
    ),*/
    'project',
     /*array(
        'name'  => 'project',
        'value' => 'Project::model()->findByPk($data->project)->proj_name',
   'filter'=>CHtml::listData(Project::model()->findall(),'proj_id','proj_name'),
        ),*/
    'complexity',
  /*array(
        'name'  => 'complexity',
        'value' => 'Complexity::model()->findByPk($data->complexity)->Complexity_Name',

   'filter'=>CHtml::listData(Complexity::model()->findall(),'id','Complexity_Name'),
        ),*/
    'totalpage',
    'rate_per_page',
    'total_amount',

    /*array(
        'class'=>'CButtonColumn',
    ),*/
),
     )); ?>

我需要显示由详细视图数据自动过滤的网格('invoice_no',) 我的控制器用于上述视图

public function actionView($id)
{
 //$dataProvider=new CActiveDataProvider('InvoiceTransaction');


    $dataProvider=new InvoiceTransaction('search');//this is a different model
    $dataProvider->unsetAttributes();  // clear any default values
    if(isset($_GET['InvoiceTransaction']))
        $dataProvider->attributes=$_GET['InvoiceTransaction'];
    $this->render('view',array(
        'model'=>$this->loadModel($id),'dataProvider'=>$dataProvider,
    ));
}

如何解决我的问题。任何人都可以提出建议

答案嗨我得到了过滤问题的答案,只是在控制器中添加了默认过滤器值

public function actionView($id)
{
 //$dataProvider=new CActiveDataProvider('InvoiceTransaction');
     $model=$this->loadModel($id);

    $dataProvider=new InvoiceTransaction('search');
    $dataProvider->unsetAttributes();  // clear any default values
    if(isset($_GET['InvoiceTransaction']))
        $dataProvider->attributes=$_GET['InvoiceTransaction'];
        $dataProvider->invoice_no=$model->invoice_no;/// this line only gave me answer

 //$model->unsetAttributes(); 
      if(isset($_GET['InvoiceMaster']))
        $dataProvider->attributes=$_GET['InvoiceMaster'];
    $this->render('view',array(
        'model'=>$model,'dataProvider'=>$dataProvider,
    ));
}

但现在正努力将同一文件中的detailview和gridview导出为pdf或excel。

2 个答案:

答案 0 :(得分:2)

PHPExcel可以创建Excel文档并将其导出为PDF。一些examples can be found here

答案 1 :(得分:1)

此扩展程序PHPExcel可以帮助您轻松地将gridview导出为Excel文件。