PDA

View Full Version : اضافه کردن یک ستون به CGridView



masiha68
یک شنبه 28 دی 1393, 16:40 عصر
سلام
من میخوام یه ستون به سی گرید ویو اضافه کنم . البته با خود اضافه کردنش مشکل ندارم مشکل من نوشتن تابعه
:


<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'comment-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'name',
'email',
'blog',

array(
'name'=>'state',
'type'=>'raw',
'value'=>CommentController::CommentState($model->state),
),
/*
'time',
'body',
'post_id',
*/
array(
'class'=>'CButtonColumn',
),
),
)); ?>


مشکل اینه نمی دونم تابع CommentState رو چجوری بنویسیم که به جای state 1 یا 2 بیاد مقادیر تایید شده و تایید نشده رو قرار بده
کسی هست بتونه کمک کنه

qartalonline
یک شنبه 28 دی 1393, 17:19 عصر
تو مدل comment کد زیر رو اضافه کنید.

public function getStatusName()
{
$status = array(
1 => 'تایید شده',
2 => 'تایید نشده',
);
return isset($status[$model->status]) ? $status[$model->status] : 'نامشخص';
}


و تو CGridView بصورت زیر استفاده کنید.

<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'comment-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'id',
'name',
'email',
'blog',
array(
'name' => 'state',
'value' => $model->statusName,
),
/*
'time',
'body',
'post_id',
*/
array(
'class' => 'CButtonColumn',
),
),
));
?>

masiha68
یک شنبه 28 دی 1393, 17:33 عصر
ممنون
ولی همه اش می نویسه نامشخص


static function CommentState($state)
{

$pop= array('0'=>'accept','1'=>'not accept');
return $pop[$state];
}
این تابعی بود که من نوشته بودم ...

qartalonline
یک شنبه 28 دی 1393, 18:00 عصر
متغییر ها و اعداد و طبق کد خودتون باید تغییر می دادید.

ببخشید البته یه قسمتش رو اشتباه نوشتم. تو کدی که گفتم به مدل اضافه کنید به جای متغییر model باید از this استفاده میشد بصورت زیر:

public function getStatusName()
{
$status = array(
1 => 'تایید شده',
2 => 'تایید نشده',
);
return isset($status[$this->status]) ? $status[$this->status] : 'نامشخص';
}


کد خودتون رو هم بصورت زیر میتونید استفاده کنید:

<?php

$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'comment-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'id',
'name',
'email',
'blog',
array(
'name' => 'state',
'type' => 'raw',
'value' => function($model){
return CommentController::CommentState($model->state);
},
),
/*
'time',
'body',
'post_id',
*/
array(
'class' => 'CButtonColumn',
),
),
));
?>

masiha68
یک شنبه 28 دی 1393, 18:13 عصر
البته خودم از this هم استفاده کردم ولی جواب نداد . ولی با روش دوم که روی تابع خودم نوشتین جواب داد .
حالا اگه بخوام یه دکمه اضافه کنم که دیدگاه ها رو تایید کنه باید چیکار کنم .

array(
'name'=>'accept',

'value'=>CHtml::encode(CHtml::link('taaild',yii::app()->createUrl('comment/admin',array('action'=>'accept','id'=>$model->id)))),
)
من اینو نوشتم

engmmrj
یک شنبه 28 دی 1393, 20:51 عصر
value ها باید تو تک کوتیشن '' باشه