TbDetailView自定义属性GetStatusName

时间:2013-01-23 11:38:27

标签: php yii yii-extensions

尝试在GetStatusName上使用我的模型函数TbDetailView,但它不起作用。 它在TbGridView上正常工作。

模型功能:

public function getStatusName()
{
    switch($this->status)
    {
        case self::STATUS_ACTIVE:
            return 'Active';
            break;
        case self::STATUS_DELETED:
            return 'Deleted';
            break;
        default:
            return 'Unknown';
            break;
    }
}

代码:

<?php
$this->widget('bootstrap.widgets.TbDetailView',array(
    'type'=>'bordered condensed',
    'data'=>$model,
    'attributes'=>array(
        'name',
        array('name' => 'status', 'type' => 'text', 'value' => '$data->statusName'),
    ),
));
?>

查看:

Name    John
Gender  $data->statusName

3 个答案:

答案 0 :(得分:4)

CDetailView中,value必须直接指定,不带引号。 CGridView中的值不是eval,所以请使用:

array('name' => 'status', 'type' => 'text', 'value' => $model->statusName)

答案 1 :(得分:2)

<?php
$this->widget('bootstrap.widgets.TbDetailView',array(
   'type'=>'bordered condensed',
   'data'=>$model,
   'attributes'=>array(
       'name',
       array('name' => 'status', 'type' => 'text', 'value' => $data->statusName),
   ),
));
?>

或:

<?php
$this->widget('bootstrap.widgets.TbDetailView',array(
   'type'=>'bordered condensed',
   'data'=>$model,
   'attributes'=>array(
       'name',
       array('name' => 'status', 'type' => 'text', 'value' => getStatusName($data->getStatusName)),
   ),
));
?>

编辑后编辑。

答案 2 :(得分:2)

这是一个小例子,我现在发现如何处理格式化值:

    <?php $this -> widget('bootstrap.widgets.TbDetailView', array(
            'data' => $user,
            'type' => 'bordered striped condensed',
            'attributes' => array(
                    'name',
                    array(
                            'name' => 'birthDate',
                            'value' => Yii::app()->dateFormatter->format("dd.MM.yy", strtotime('$data->birthDate')),
                    ),
                    'code',
            ),
    ));
    ?>