在Yii中显示名称而不是Id

时间:2013-08-15 07:17:13

标签: yii

我想显示Shift的名称而不是shift_id

我有一个来自其他表的dropboxlist,就像这样

<div>
<?php echo $form->labelEx($model,'mon'); ?>
<?php echo $form->dropDownList($model, 'mon', CHtml::listData(
        Shift::model()->findAll(), 'shft_id', 'name'),
    array('prompt' => 'Select a Department')
); ?>
<?php echo $form->error($model,'mon'); ?>

我有两张桌子 日:id_day,mon,tues,wed等等

Shift:shft_id,start,end,name,status

这是当天的关系

'shift'=>array(self::HAS_MANY,'Shift','shft_id'),

换班次:

'day'=>array(self::BELONGS_TO,'Day','id_day'),

它已经有效了。 Dropbox中的选项是Shift的名称,并将shft_id放在mon,tues,wed等中。在表单的视图中它看起来像

id_user:3

问:5

周二:5

结婚:6

我想成为的是在视图中。

id_user:3

星期一:上午6点到下午5点

周二:上午7点至下午6点

etc.etc。

我不知道它是什么命令。我不知道。请帮帮我

6 个答案:

答案 0 :(得分:2)

而不是User :: getusername()方法。

我认为你可以在一行中使用它。

 // format models resulting using listData     
<?php echo $form->dropdownlist($model,'user_id', CHtml::listData(User::model()->findAll(),'id', 'name')); ?>

答案 1 :(得分:1)

下面是一个我认为可以解决您的问题的例子

_form.php

中的

<?php echo $form->dropdownlist($model,'user_id', User::getusername()); ?>
<?php echo $form->error($model,'user_id'); ?></th>
用户模型

中的

public function getusername()
{
   $criteria2=new CDbCriteria;
   $criteria2->select='*';
   $quser=User::model()->findAll($criteria2);
   foreach($quser as $r) 
   {    
      $user_id= $r->user_id;
      $user_name=$r->user_name;

      $user_array[$user_id]=$user_name;
   }
   return $user_array;
}

答案 2 :(得分:0)

我正在努力了解你真正在问什么。我相信你说你已经能够从下拉列表中正确填充你的记录了。但是在显示时,视图只显示shift_id值?当天的关系应该能够得到您的班次名称。你是如何显示列表的:

mon: 5
tue: 5
wed: 6

我正在尝试了解您是否需要帮助正确显示下拉项目,或者如何在数据库中设置值后显示班次名称。此外,你的'Day'表让我感到困惑。字段名称是什么?他们是'day_id'还是'day'?或者你实际上是在每周的每一天之后命名字段吗?

如果您通过foreach显示数据并且每天(假设它是$day)对象,那么与'shift'的关系可以给出如下名称:{ {1}}如果名称显示为“#am-#pm”。否则你可以这样显示:

echo $day->shift->name;

答案 3 :(得分:0)

感谢帮助我的人们。它确实引导我回答任何在这里遇到同样问题的人就是我所做的。

在我的模特/日

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
       'monday'=>array(self::BELONGS_TO,'Shift','mon'),
       'tuesday'=>array(self::BELONGS_TO,'Shift','tue'),
       'wednesday'=>array(self::BELONGS_TO,'Shift','wed'),
       'thursday'=>array(self::BELONGS_TO,'Shift','thurs'),
       'friday'=>array(self::BELONGS_TO,'Shift','fri'),
       'saturday'=>array(self::BELONGS_TO,'Shift','sat'),
       'sunday'=>array(self::BELONGS_TO,'Shift','sun'),



    );
}

和我的模特/ Shift

public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(


        'day_mon' =>array(self::HAS_MANY,'Day','mon'),
        'day_tue' =>array(self::HAS_MANY,'Day','tue'),
        'day_wed' =>array(self::HAS_MANY,'Day','wed'),
        'day_thurs'=> array(self::HAS_MANY,'Day','thurs'),
        'day_fri'=>array(self::HAS_MANY,'Day','fri'),
        'day_sat'=>array(self::HAS_MANY,'Day','sat'),
        'day_sun'=>array(self::HAS_MANY,'Day','sun'),
    );
}

问题在于我的关系。它未正确设置,因此您需要正确设置然后转到日期/视图

<?php $this->widget('bootstrap.widgets.TbDetailView',array(
'data'=>$model,
'attributes'=>array(
    'id_day',
    array(
        'name'=>'mon',
        'value'=>CHtml::encode($model->monday->name)
    ),

这是输出

enter image description here

答案 4 :(得分:0)

如果您有详细信息,请使用以下代码:

widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'id', 'name', array( 'label' => $model->shift->getAttributeLabel('shift_name'), 'value' => $model->shift->shift_name ),)); ?>

答案 5 :(得分:0)

如果有其他人在我的船上,你需要做的是在view / modelname / view.php中编辑view.php

widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'id', 'name', 'country_id')); ?>

widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'id', 'name', array( 'label' => $model->country->getAttributeLabel('country'), 'value' => $model->country->name ),)); ?>