3

试图在 上使用我的模型功能GetStatusNameTbDetailView但它不起作用。它的工作正常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
4

3 回答 3

4

CDetailView,value中必须直接指定,不带引号。该值不是 eval'd like in CGridView,所以使用:

array('name' => 'status', 'type' => 'text', 'value' => $model->statusName)
于 2013-01-23T12:11:07.837 回答
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)),
   ),
));
?>

评论后编辑。

于 2013-01-23T11:45:58.230 回答
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',
            ),
    ));
    ?>
于 2013-02-05T11:48:00.813 回答