تنظیمات CGridView در Yii (قسمت اول)

یکی از ویجت های مهم و کاربردی در فریم ورک Yii که زیاد با اون سروکار داریم ویجت cgridview هست .
که وظیفه ی مدیریت اطلاعات ما را بر عهده داره .
این ویجت برای نمایش طلاعات تنظیمات مختلفی داره که در اینجا بخشی از آنها و در آموزش های بعدی به طور کامل با اون تنظیمات آشنا میشم .
برای شروع ما ابتدا یه نگاه به بخش مدیریت کاربران خودمون می اندازیم :
تصویر زیر را مشاهده نمایید:

 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

در تصویر بالا ما سه تا ستون داریم که به صورت مستقیم اطلاعاتی که در دیتابیس وجود داررو نمایش میده :
کد cgridview برای تصویر بالا به این شکل هست :

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'user-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'email',
'first_name',
'last_name',
array(
'class'=>'CButtonColumn',
),
),
));

توجه داشته باشین : در نمایش اطلاعات به صورت مستقیم از دیتابیس می توانیم نام ستونمون را بنویسیم : مانند first_name , last_name , email
به صورت پیش فرض اطلاعات ستون را می توانیم مستقیم از نام ستون استفاده کنیم .
با این کار فریم ورک به صورت اتوماتیک عنوان ستونمون را از مدل میخونه :

public function attributeLabels() {
return array(
'id' => 'شناسه کاربری',
'email' => 'آدرس ایمیل',
'password' => 'رمزعبور',
'first_name' => 'نام',
'last_name' => 'نام خانوادگی',
'status' => 'وضعیت',
'path' => 'تصویر',
);
}

راه دیکه ای که دستمونو بیشتر باز میزاره واسه نمایش اطلاعات در cgridview به صورت زیر هست :

'columns'=>array(
array(
'name'=>'first_name',
'value'=>'$data->first_name',
),
array(
'name'=>'last_name',
'value'=>'$data->last_name',
),
array(
'name'=>'email',
'value'=>'$data->email',
),
array(
'class'=>'CButtonColumn',
),
),

با استفاده از روش بالا دست ما در نمایش اطلاعات باز تر میشه همچنین با اضافه کردن header میتونین نام ستون هارو بر اساس سلیقه ی خود تغییر بدین :

array(
'name'=>'first_name',
'header'=>'نام کوچک شما',
'value'=>'$data->first_name',
),

با این کد نام ستون شما از نام به نام کوچک شما تغییر میکند.

این برای نمایش اطلاعاتی بود که به صورت مستقیم از دیتابیس نمایش دادیم
حالا ستون status را به cgridview اضافه میکنیم
اطلاعاتی که در دیتابیس باشد را نمایش میدهد : ۱ یا ۰

'columns'=>array(
array(
'name'=>'first_name',
'header'=>'نام کوچک شما',
'value'=>'$data->first_name',
),
array(
'name'=>'last_name',
'header'=>'نام خانوادگی شما',
'value'=>'$data->last_name',
),
array(
'name'=>'email',
'value'=>'$data->email',
),
array(
'name'=>'status',
'value'=>'$data->status',
),
array(
'class'=>'CButtonColumn',
),
),

شکل زیر :
 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

خوب طبیعیه که ما نمیخوایم وضعیت به ما یه عدد نشون بده :
برای این کار ما از قابلیت های cgridview استفاده میکنیم تا پیام مناسب را به ما بدهد :

array(
'name' => 'status',
'value' => function ($data) {
switch ($data->status) {
case 0:
$status = "غیر فعال";
break;
case 1:
$status = " فعال";
break;
default:
$status = "-";
break;
}
echo $status;
},
),

خوب حالا برای نمایش تصویر کد زیر را مشاهده نمایید:

array(
'name' => 'path',
'type' => 'raw',
'value' => function ($data) {
$base = '/images/';
if (!empty($data->path) && !is_null($data->path)) {
$img = CHtml::image($base . $data->path, $data->first_name, array("width" => 150, "height" => 150));
} else {
$img = '-';
}
return $img;
},
),

برای نمایش تگ های html در cgridview شما باید مقدار type را مساویه raw قرار بدین :
‘type’ => ‘raw’,
در کد بالا بررسی کردیم که اگر path خالی بود “-” قرار داده شود و اگر خالی نبود تگ img قرار داده شود با مسیر نمایش تصویر .
با استفاده از CHtml::image می توانید تصویر را نمایش دهید
تنظیمات این تابع فریم ورک yii به این صورت است که :
ابتدا مسیر تصویر را قرار میدهید , سپس مقدار alt تگ img را مشخص میکنید (در اینجا من مقدار first_name را قرار دادم)
گزینه ی بعدی آرایه ای هست که میتونین به تگ img اصافه کنین
برای مثال من مقدار width و height را مشخص کردم در نهایت نتیجه معادل میشه با کد html زیر

img width="200" height="200" src="/images/1450122223.jpg" alt="test"

در نهایت مدیریت کاربران ما به این شکل در میاد :
 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

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

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