[ask] how to export record data to excel based on filter

i’m a newbie…

i want to ask how to export record data to excel based on filter? at this time, i just can export all record data.

please help me.

it’s code at controller


public function actionPrintXls() {

        set_time_limit(0);


            if (!isset($_POST['PHasilAgendaMonitoringPk'])) {

            throw new CHttpException(403, 'Invalid request. Please do not repeat this request again.');

        }

             ini_set('memory_limit', '2G');

        $model = new PHasilAgendaMonitoringPk('searchDisplay');

        $model->attributes = $_POST['PHasilAgendaMonitoringPk'];

        $model->limit = 0;


                //VIEW EXCEL

            $view = $this->renderPartial('/report/kemitraan/lap_monitoringPk', array(

                'model' =>  $model->searchDisplay()->data

            ), true);

            Helper::ToXls('daftarMonitoringPk', $view);


              




    }

it’s code at model


class PHasilAgendaMonitoringPk extends CActiveRecord36 {


    const STATUS_BATAL = -1;

    const STATUS_BELUM = 0;

    const STATUS_SUDAH = 1;

    public $ikut_pameran;

    public $fk_wilayah_id = null;

    /**

     * Returns the static model of the specified AR class.

     * @param string $className active record class name.

     * @return PHasilAgendaMonitoringPk the static model class

     */

    public static function model($className = __CLASS__) {

        return parent::model($className);

    }


    /**

     * @return string the associated database table name

     */

    public function tableName() {

        return 'p_hasil_agenda_monitoring_pk';

    }


    /**

     * @return array validation rules for model attributes.

     */

    public function rules() {

        // NOTE: you should only define rules for those attributes that

        // will receive user inputs.

        return array(

            array(

                'fk_agenda_id, fk_personal_id',

                'required'

            ),

            array(

                'tgl_input, tgl_kunjungan',

                'required',

                'on' => 'entryMonitoring'

            ),

            array(

                'fk_wilayah_id',

                'safe',

                'on' => 'displayMonitoring'

            ),

            array(

                'tahap_penyaluran_kredit, jangka_waktu_angsuran, jumlah_tunggakan, jml_karyawan, rencana_jml_karyawan, hasil_pelatihan_diterapkan, keikutsertaan_pameran, user_act, obsolete',

                'numerical',

                'integerOnly' => true

            ),

            array(

                'nilai_kredit, nilai_angsur_perbulan, nilai_tunggakan, aset_awal, aset_akhir, omzet_awal, omzet_akhir',

                'numerical'

            ),

            array(

                'fk_agenda_id',

                'length',

                'max' => 20

            ),

            array(

                'fk_personal_id, ',

                'length',

                'max' => 11

            ),

            array(

                'kode, sektor_usaha, no_telp, no_hp, status_pinjaman',

                'length',

                'max' => 45

            ),

            array(

                'nama_kode_mitra, alamat',

                'length',

                'max' => 150

            ),

            array(

                'nama_usaha, jenis_produk, jenis_usaha, daerah_pemasaran, nama_pemilik_usaha',

                'length',

                'max' => 100

            ),

            array(

                'mulai_berdiri_tahun, tahun_terdaftar_mitra',

                'length',

                'max' => 4

            ),

            array(

                'tgl_input, tgl_kunjungan, ikut_pameran, penghargaan_pengalaman, permasalahan_dihadapi, pelatihan_list, rekomendasi, time_act',

                'safe'

            ),

            // The following rule is used by search().

            // Please remove those attributes that should not be searched.

            array(

                'id, fk_agenda_id, fk_personal_id, kode, tgl_input, tgl_kunjungan, nama_kode_mitra, nama_usaha, jenis_produk, sektor_usaha, jenis_usaha, mulai_berdiri_tahun, daerah_pemasaran, nama_pemilik_usaha, alamat, no_telp, no_hp, tahun_terdaftar_mitra, tahap_penyaluran_kredit, nilai_kredit, jangka_waktu_angsuran, nilai_angsur_perbulan, jumlah_tunggakan, nilai_tunggakan, status_pinjaman, aset_awal, aset_akhir, omzet_awal, omzet_akhir, jml_karyawan, rencana_jml_karyawan, hasil_pelatihan_diterapkan, keikutsertaan_pameran, penghargaan_pengalaman, permasalahan_dihadapi, pelatihan_list, rekomendasi, user_act, time_act, obsolete',

                'safe',

                'on' => 'search'

            ),

            array(

                'id, fk_agenda_id, fk_personal_id, kode, tgl_input, tgl_kunjungan, nama_kode_mitra, nama_usaha, jenis_produk, sektor_usaha, jenis_usaha, mulai_berdiri_tahun, daerah_pemasaran, nama_pemilik_usaha, alamat, no_telp, no_hp, tahun_terdaftar_mitra, tahap_penyaluran_kredit, nilai_kredit, jangka_waktu_angsuran, nilai_angsur_perbulan, jumlah_tunggakan, nilai_tunggakan, status_pinjaman, aset_awal, aset_akhir, omzet_awal, omzet_akhir, jml_karyawan, rencana_jml_karyawan, hasil_pelatihan_diterapkan, keikutsertaan_pameran, penghargaan_pengalaman, permasalahan_dihadapi, pelatihan_list, rekomendasi, user_act, time_act, obsolete',

                'safe',

                'on' => 'searchDisplay'

            ),

        );

    }


    /**

     * @return array relational rules.

     */

    public function relations() {

        // NOTE: you may need to adjust the relation name and the related

        // class name for the relations automatically generated below.

        return array(

            'fkAgenda' => array(

                self::BELONGS_TO,

                'PAgenda',

                'fk_agenda_id'

            ),

            'fkPersonal' => array(

                self::BELONGS_TO,

                'PPersonal',

                'fk_personal_id'

            ),

        );

    }


    /**

     * @return array customized attribute labels (name=>label)

     */

    public function attributeLabels() {

        return array(

            'id' => 'ID',

            'fk_agenda_id' => 'Agenda',

            'fk_personal_id' => 'Personal',

            'kode' => 'Kode',

            'tgl_input' => 'Tgl Input',

            'tgl_kunjungan' => 'Tgl Kunjungan',

            'nama_kode_mitra' => 'Nama Kode Mitra',

            'nama_usaha' => 'Nama Usaha',

            'jenis_produk' => 'Jenis Produk',

            'sektor_usaha' => 'Sektor Usaha',

            'jenis_usaha' => 'Jenis Usaha',

            'mulai_berdiri_tahun' => 'Mulai Berdiri Tahun',

            'daerah_pemasaran' => 'Daerah Pemasaran',

            'nama_pemilik_usaha' => 'Nama Pemilik Usaha',

            'alamat' => 'Alamat',

            'no_telp' => 'No Telp',

            'no_hp' => 'No Hp',

            'tahun_terdaftar_mitra' => 'Tahun Terdaftar Mitra',

            'tahap_penyaluran_kredit' => 'Tahap Penyaluran Kredit',

            'nilai_kredit' => 'Nilai Kredit',

            'jangka_waktu_angsuran' => 'Jangka Waktu Angsuran',

            'nilai_angsur_perbulan' => 'Nilai Angsur Perbulan',

            'jumlah_tunggakan' => 'Jumlah Tunggakan',

            'nilai_tunggakan' => 'Nilai Tunggakan',

            'status_pinjaman' => 'Status Pinjaman',

            'aset_awal' => 'Aset Awal',

            'aset_akhir' => 'Aset Akhir',

            'omzet_awal' => 'Omzet Awal',

            'omzet_akhir' => 'Omzet Akhir',

            'jml_karyawan' => 'Jml Karyawan',

            'rencana_jml_karyawan' => 'Rencana Jml Karyawan',

            'hasil_pelatihan_diterapkan' => 'Hasil Pelatihan Diterapkan',

            'keikutsertaan_pameran' => 'Keikutsertaan Pameran',

            'ikut_pameran' => 'Keikutsertaan Pameran',

            'penghargaan_pengalaman' => 'Penghargaan Pengalaman',

            'permasalahan_dihadapi' => 'Permasalahan Dihadapi',

            'pelatihan_list' => 'Daftar Pelatihan',

            'rekomendasi' => 'Rekomendasi',

            'user_act' => 'User Act',

            'time_act' => 'Time Act',

            'obsolete' => 'Obsolete',

        );

    }


    


    public function searchDisplay() {

        // Warning: Please modify the following code to remove attributes that

        // should not be searched.


        $criteria = new CDbCriteria;


        $criteria->with = array(

            'fkAgenda' => array('joinType' => 'inner join'),

            'fkAgenda.fkPelaksana1' => array('joinType' => 'inner join'),

            'fkPersonal' => array('joinType' => 'inner join'),

            'fkPersonal.fkWilayah' => array('joinType' => 'inner join')

            );

        $criteria->condition = "t.kode is not null";

        if (!empty($this->fk_wilayah_id)) {

            $criteria->addCondition("fkWilayah.id=:wilayah_id or fkWilayah.fk_wilayah_id=:wilayah_id or fkWilayah.fk_provinsi_id=:wilayah_id or fkWilayah.fk_kota_id=:wilayah_id");

            $criteria->params = array(":wilayah_id" => $this->fk_wilayah_id);

        }

        if (!empty($this->fkAgenda->fkPelaksana1->nama)) {

            $criteria->addCondition('fkAgenda.fkPelaksana1.nama like "%' . $this->fkAgenda->fkPelaksana1->nama . '%"');

        }

        if (!empty($this->kode)) {

            $criteria->addCondition('t.kode like "%' . $this->kode . '%"');

        }

        if (!empty($this->nama_kode_mitra)) {

            $criteria->addCondition('t.nama_kode_mitra like "%' . $this->nama_kode_mitra . '%"');

        }

        if (!empty($this->nama_usaha)) {

            $criteria->addCondition('t.nama_usaha like "%' . $this->nama_usaha . '%"');

        }

        if (!empty($this->sektor_usaha)) {

            $criteria->addCondition('t.sektor_usaha like "%' . $this->sektor_usaha . '%"');

        }

        if (!empty($this->jenis_produk)) {

            $criteria->addCondition('t.jenis_produk like "%' . $this->jenis_produk . '%"');

        }

               

        $criteria->addCondition ("fkAgenda.fk_regional_id in ({$this->regional})");

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

        $criteria->compare('t.fk_agenda_id', $this->fk_agenda_id);


        $criteria->compare('t.tgl_input', $this->tgl_input, true);

        $criteria->compare('t.tgl_kunjungan', $this->tgl_kunjungan, true);

        $criteria->compare('t.nama_kode_mitra', $this->nama_kode_mitra, true);


        $criteria->compare('t.jenis_usaha', $this->jenis_usaha, true);

        $criteria->compare('t.mulai_berdiri_tahun', $this->mulai_berdiri_tahun, true);

        $criteria->compare('t.daerah_pemasaran', $this->daerah_pemasaran, true);

        $criteria->compare('t.nama_pemilik_usaha', $this->nama_pemilik_usaha, true);

        $criteria->compare('t.alamat', $this->alamat, true);

        $criteria->compare('t.no_telp', $this->no_telp, true);

        $criteria->compare('t.no_hp', $this->no_hp, true);

        $criteria->compare('t.tahun_terdaftar_mitra', $this->tahun_terdaftar_mitra, true);

        $criteria->compare('t.tahap_penyaluran_kredit', $this->tahap_penyaluran_kredit);

        $criteria->compare('t.nilai_kredit', $this->nilai_kredit);

        $criteria->compare('t.jangka_waktu_angsuran', $this->jangka_waktu_angsuran);

        $criteria->compare('t.nilai_angsur_perbulan', $this->nilai_angsur_perbulan);

        $criteria->compare('t.jumlah_tunggakan', $this->jumlah_tunggakan);

        $criteria->compare('t.nilai_tunggakan', $this->nilai_tunggakan);

        $criteria->compare('t.status_pinjaman', $this->status_pinjaman, true);

        $criteria->compare('t.aset_awal', $this->aset_awal);

        $criteria->compare('t.aset_akhir', $this->aset_akhir);

        $criteria->compare('t.omzet_awal', $this->omzet_awal);

        $criteria->compare('t.omzet_akhir', $this->omzet_akhir);

        $criteria->compare('t.jml_karyawan', $this->jml_karyawan);

        $criteria->compare('t.rencana_jml_karyawan', $this->rencana_jml_karyawan);

        $criteria->compare('t.hasil_pelatihan_diterapkan', $this->hasil_pelatihan_diterapkan);

        $criteria->compare('t.keikutsertaan_pameran', $this->keikutsertaan_pameran);

        $criteria->compare('t.penghargaan_pengalaman', $this->penghargaan_pengalaman, true);

        $criteria->compare('t.permasalahan_dihadapi', $this->permasalahan_dihadapi, true);

        $criteria->compare('t.pelatihan_list', $this->pelatihan_list, true);

        $criteria->compare('t.rekomendasi', $this->rekomendasi, true);

        $criteria->compare('fkPelaksana1.nama', $this->user_act, true);

        $criteria->compare('t.time_act', $this->time_act, true);

        $criteria->compare('t.obsolete', $this->obsolete);




        $limit = $this->limit == 0 || empty($this->limit) ? $this->count($criteria) : $this->limit;

        

        return new CActiveDataProvider($this, array(

            'criteria' => $criteria,

            'pagination' => array('pageSize' => $limit),

        ));

    }


    

 


}

and it’s code at view (not view excel, but view to display result record data and a download button)




<?php

$this->breadcrumbs = array(

    'Display Monitoring' => array('display/monitoringPk'),

    'Manage',

);


$this->pageTitle = 'Kelola Display Monitoring';




Yii::app()->clientScript->registerScript('search', "

$('#btn_cari').click(function(){

        $.fn.yiiGridView.update('pproposal-pk-grid', {

                data: {'PHasilAgendaMonitoringPk[fk_wilayah_id]': $('#fk_wilayah_id').val()}

        });

        return false;

});

", CClientScript::POS_END);


?>


<div class="well">

    <legend>Filter</legend>

    <?php

    $this->widget('ext.wilayah.Wilayah', array(

        'name' => 'fk_wilayah_id',

        'display' => 'leftToRight',

        'width' => '220px',

        'allowClear' => true

    ));

    echo '<hr>';

    echo CHtml::button('CARI', array('id' => 'btn_cari', 'class' => 'btn btn-primary'));

    ?>

</div>


<div style="width: 100%; overflow-x: auto;">

    <?php

    //if (Yii::app()->user->regional == PRegional::REGIONAL_TONASA) {

        $this->widget('ext.iAct.IAct', array(

        'url' => 'hasilAgendaMonitoringPk/printXls',

        //'value' => $_GET['ajax'],

        'id' => 'btnDownlodMonitoringPk',

        'idForm' => 'formDownloadMonitoringPk',

        

        'includeElement' => array('PHasilAgendaMonitoringPk' =>  array(

                                array('name' => 'fk_agenda_id', 'selector' => '$("#fk_agenda_id")'),

                                array('name' => 'kode', 'selector' => '$("#kode")'),

                                array('name' => 'nama_kode_mitra', 'selector' => '$("#nama_kode_mitra")'),

                                array('name' => 'nama_usaha', 'selector' => '$("#nama_usaha")'),

                                array('name' => 'sektor_usaha', 'selector' => '$("#sektor_usaha")'),

                                array('name' => 'jenis_produk', 'selector' => '$("#jenis_produk")'),

//                                array('name' => 'tgl_kunjungan', 'selector' => '$("#PProposalPk_search_mitra")'),

//                                array('name' => 'rekeningBank', 'selector' => '$("#PProposalPk_rekeningBank")'),

//                                array('name' => 'search_tgl', 'selector' => '$("#PProposalPk_search_tgl")'),

//                                array('name' => 'search_tgl_diterima', 'selector' => '$("#PProposalPk_search_tgl_diterima")'),

                            ) ), 

        'titlePopover' => '',

        'class' => 'icon-circle-arrow-down xls',

        'contentPopover' => 'Download Monitoring PK'

        ));

    //}


    $this->renderPartial('_gridMonitoringPK', array('model' => $model)); 

    ?>

</div>