cDetailview显示别名yii

时间:2014-05-20 06:37:47

标签: php yii yii-widgets

我的观看代码

<?php $this->widget('zii.widgets.CDetailView', array(
                    'data'=>$model,
                    'attributes'=>array(
                        'id',
                        'eventstype',
                        'visibility',
                        'enable',
                    ),
                )); ?>

控制器代码

public function actionView($id)
    {
        $model = ManageEventsType::model()->findByAttributes(array("id" => $id));
                if($model){
                $this->render("view", array(
                    "model" => $model
                ));
                }
    }

在我的视图页面中,记录显示如下

Id          3
Eventstype  Holiday
Visibility  2
Enable      0

我希望将可见性显示为启用或禁用。 1-启用,2-禁用, 任何想法

2 个答案:

答案 0 :(得分:1)

$text = $model->visibility == 1 ? 'enable' : 'disabled';

$this->widget('zii.widgets.CDetailView', array(
    'data'=>$model,
    'attributes'=>array(
        'id',
        'eventstype',
    array(
       'name' => 'visibility',
       'value' => $text,
    ),

    ),
)); ?>

答案 1 :(得分:0)

“优雅”的方法是更改​​ActiveRecord模型。

class ManageEventsType extends CActiveRecord
{

   /* Give it a name that is meaningful to you */
   public $visibility_text;

   ...

}

这将通过创建附加属性来扩展您的模型。

在模型中,然后添加(并覆盖)afterFind()函数。

class ManageEventsType extends CActiveRecord    
{
    public $visibility_text;
    protected function afterFind ()
    {
        $this->visibility_text =  (($this->visibility) == 1)? 'enabled' : 'disabled');
        parent::afterFind ();   // Call the parent's version as well
    }

    ...
}

这将有效地为您提供一个新字段,因此您可以执行以下操作:

$eventTypeModel = ManageEventsType::model()->findByPK($eventTypeId);
echo 'The visibility is .'$eventTypeModel->visibility_text;

所以你最终的代码看起来像这样。

<?php $this->widget('zii.widgets.CDetailView', array(
                    'data'=>$model,
                    'attributes'=>array(
                        'id',
                        'eventstype',
                        'visibility_text',     // <== show the new field ==> //
                        'enable',
                    ),
                ));
?>