استفاده از objectدر Gridview در Yii

یکی از امکانات فوق العاده ای که در Cgridview وجود داره اینه که شما میتوانید
به راحتی اطلاعات ستون gridveiw را با استفاده از یک آبجکت پر کنید
برای مثال شما میخواهید در gridview چیزی را نمایش دهید
که در جدول دیتابیستون نیست و باید بر اساس یک محاصبه انجام بشه
در مثال زیر من بر اساس شماره فاکتور مجموع هزینه ی آیتم های موجود در آن فاکتور را
محاصبه و در gridview نمایش می دهم .
در gridview:

 array(
            'header' => 'مجموع(ریال)',  
            'value' => array($this, 'totall'),
        ),

همونطور که می بینید من در قسمت value متد totall را فراخوانی کردم

حالا برای انجام محاسبات در کنترلر متد زیر را استفاده می کنیم :

protected function totall($data, $row) {
        $query = "select sum(total) as total from shop where factor='" . $data->factor."'";
        $result = Yii::app()->db->createCommand($query)->queryRow();
        if((int)$result['total'] !=0){
            $total=$result['total'];
        }
        else{
              $total=0;
        }
        return number_format($total);
    }

این روش را نیز به صورت زیر نیز می توان استفاده کرد (با استفاده از model )
در gridveiw:

 array(            
       'header' => 'مجموع(ریال)',  
            'value'=>array($model,'totall'), 
        ),

و در کنترلر:

 public function totall($data, $row) {
        $query = "select sum(total) as total from shop where factor='" . $data->factor."'";
        $result = Yii::app()->db->createCommand($query)->queryRow();
        if((int)$result['total'] !=0){
            $total=$result['total'];
        }
        else{
              $total=0;
        }
        return number_format($total);
    }

منبع

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *