从过滤的CGridView创建PDF文档 - Yii

时间:2014-04-15 17:03:38

标签: yii pdf-generation

我正在尝试从过滤的CGridView创建PDF。该值将通过高级搜索中的下拉菜单传递,但问题是我无法通过我的pdf函数过滤搜索。

控制器

public function actionPrint() {
    $mPDF1 = Yii::app()->ePdf->mpdf('ar','A4','14','dejavusanscondensed');
    $model=new Country('search');

    $model->center_id = 1;// This value will be passed from dropdown
                          //and i want the report to be made on this

    $model->unsetAttributes(); 
    if(isset($_GET['Country']))
        $model->attributes=$_GET['Country'];

    $html = '';
    $html .= $this->renderPartial('candidates', array('model'=>$model, 'enablePagination' => false),true);
    $mPDF1->WriteHTML($html, false);
    $mPDF1->Output('list.pdf','D');
}

查看

    $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'country-grid',
        'dataProvider'=>$model->search($enablePagination),
        'summaryText' => '',
       // 'enablePagination' => false,
        'filter'=>$model,
        'columns'=>array(
            'name',
            array(
                'header'=>' Total Registered Candidates',
                'value'=>'$data->itemsTotal',
            ),
        ),
    ));
    echo CHtml::link(
        'Save as PDF',
        Yii::app()->createUrl('country/print'),
        array('class'=>'btnPrint btn btn-danger','target'=>'_blank'));

模型

public function search($enablePagination = true)
{
         $criteria->together= true;
        $criteria->with=array('center');
 $criteria->compare('center.name', $this->center_id, true);
..........
        if ($enablePagination)
        {
                $pagination = array(
                        'pageSize' => 30,
                );
        }
        else
        {
                $pagination = false;
        }

        return new CActiveDataProvider($model, array(
                'criteria' => $criteria,
                'pagination' => $pagination,
        ));
}

1 个答案:

答案 0 :(得分:1)

由于center_id是外键

$criteria->compare('center.name', $this->center_id, true);

应该阅读

$criteria->compare('center_id', $this->center_id);

您还可以执行以下操作,但这会在已连接的表上添加条件,并可能导致查询速度变慢。

$criteria->compare('center.id', $this->center_id);