嗨我在yii中有CRUD生成的CGridView。我需要向CGridView行添加一个新按钮,如果 appointment_status (CGridView列之一)值等于0,则隐藏它
这是我的CGridView代码,
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'bookings-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'id',
'name',
'email',
'telephone',
'time',
'employee',
'appointment_status',
'client_ip',
'link' => array(
'header' => 'Confirmation',
'type' => 'raw',
'value' => 'CHtml::button("$data->appointment_status",array("onclick"=>"document.location.href=\'".Yii::app()->controller->createUrl("controller/action",array("id"=>$data->id))."\'"))',
'visible'=>$data->appointment_status==1,
),
array(
'class' => 'CButtonColumn',
),
),
));
但我得到的只是错误陈述,
未定义的变量:数据
如果有人可以调查它会很有帮助。
答案 0 :(得分:1)
visible
是一个布尔值或PHP表达式,将被计算得到一个布尔值。在评估期间,$data
被分配给使用的dataProvider中的当前项。 $data
在评估函数evaluateExpression()
之外不存在。因此,实施应该是:
`visible` => '$data->appointment_status == 1',
答案 1 :(得分:1)
您需要在链接数组中引用可见键的值。所以不要这样:
'visible'=>$data->appointment_status==1
应该是:
'visible'=>'$data->appointment_status==1'
现在应该可以了。
答案 2 :(得分:1)
您将获得未定义的变量,因为visible
不允许任何回调。
尝试这个解决方案,它是yii2代码,我不太了解Yii。
'delete' => function ($url, $model) {
return ($model->isVisible($model)) ?
Html::a('<span class="glyphicon glyphicon-trash"></span>',
$url,
['title' => Yii::t('app', 'Delete')]) : '';
public static function isVisible($data)
{
return ($data->appointment_status == 1) ? true : false;
}
答案 3 :(得分:1)
你的可见&#39;处理列可见性而不是按钮,您可以使用模型上的自定义属性来创建和处理按钮可见性。
添加到您的模型中:
public function getConfirmationButton()
{
if ($data->appointment_status == 1) {
return CHtml::button($this->appointment_status,array("onclick"=>"document.location.href=\'".Yii::app()->controller->createUrl("controller/action",array("id"=>$this->id))."\'"));
} else {
return '';
}
}
并在您的观点中调用它:
..........
'link' => array(
'header' => 'Confirmation',
'type' => 'raw',
'value' => '$data->confirmationButton',
),
...........
答案 4 :(得分:1)
你可以像这样使用:
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'bookings-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'id',
'name',
'email',
'telephone',
'time',
'employee',
'appointment_status',
'client_ip',
'link' => array(
'header' => 'Confirmation',
'type' => 'raw',
'value' => function ($data) {
if ($data->appointment_status == 1) {
return CHtml::button("$data->appointment_status", array("onclick" => "document.location.href=\'" . Yii::app()->controller->createUrl("controller/action", array("id" => $data->id)) . "\'"));
} else {
return;
}
}
),
array(
'class' => 'CButtonColumn',
),
),
));