Pada saat kita membuat CGridView di Yii dengan kolom yang banyak kita mungkin mengalami error saat searching kemudian diikuti dengan sorting. Errornya adalah semacam info bahwa urlnya salah sehingga ditolak oleh browser atau sudah ditolak sejah headernya. Setelah ditelusuri error muncul saat kita melakukan sorting atau pengurutan data sesudah adanya searching. Dari sini kemudian kita akan memikirkan solusi untuk membuat link manual saat sorting di CGridView Yii.

Misal kita memiliki models TblFamilyMember. Untuk membuat sorting manual kita dapat masuk di View admin.php

  1. Identify link terkait search
    Script untuk mengidentifikasi  link terkait search adalah :
    <?php
    $controller=”tblFamilyMember”;
    if (isset($_GET[‘TblFamilyMember’]))
    {    
        $search_param=$_GET[‘TblFamilyMember’];
        foreach ($search_param as $key=>$value)
        {
            $value=trim($value);
            if ($value)
            {
                if ($search_get)
                {
                    $search_get .=”/”;
                }

                $search_get .=’TblFamilyMember[‘.$key.’]/’.$value;
            }
        }
    }
    //gridview;
    $gvsort=$_GET[TblFamilyMember_sort];
    $gvlink=CHtml::normalizeUrl(array(“$controller/admin/$search_get”));
    ?>
     

  2. Mengubah link sebelumnya
    Pada bagian bawah, pola pemrograman adalah seperti di bawah ini:
    <script>

     link0='<?php echo $gvlink;?>’;
     link1= link0 + ‘/TblFamilyMember_sort/’;

     kol=0;

     mylink= link1 + ‘family_member_no<?php if ($gvsort==’family_member_no’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘family_member_name<?php if ($gvsort==’family_member_name’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘address<?php if ($gvsort==’address’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘address<?php if ($gvsort==’address’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘familyarea<?php if ($gvsort==’familyarea’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘birthdate<?php if ($gvsort==’birthdate’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘birthindex<?php if ($gvsort==’birthindex’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘sex<?php if ($gvsort==’sex’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘phone<?php if ($gvsort==’phone’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ’email<?php if ($gvsort==’email’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘is_data_valid<?php if ($gvsort==’is_data_valid’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘last_coming<?php if ($gvsort==’last_coming’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

     mylink= link1 + ‘parentname<?php if ($gvsort==’parentname’) echo ‘.desc’;?>’;
     kol++;
     $(“#tbl-family-member-grid_c”+kol+” a”).attr({
            “href” : mylink,
        });

    </script>

Pada artikel ini, pada CGridView setting terkait ajaxUpdate adalah:     ‘ajaxUpdate’=>false.

Aplikasi link pada artikel ini menggunakan URL Manager. Informasi lebih lanjut mengenai URL Manager dapat dibaca di http://www.proweb.co.id/articles/web_application/url_manager_yii.html .

Kunjungi www.proweb.co.id untuk menambah wawasan anda.

« | »