Yii2-下拉列表以加载其他属性

时间:2018-08-12 19:52:47

标签: yii2

我有这个模型课

SOUNDEX('game of thrones')

在Dropdownlist更改时,我想加载并显示course_code,course_type,course_title和course_unit。但只应保存course_title。除course_title外,其他应仅显示而不保存。

我只能显示course_title。这是我对下拉列表的看法。

G513

这就是我所做的。

dropdown1

但我想实现这一目标。

dropdown2

如何在不保存数据库的情况下将其他属性显示为textInput()或标签。谢谢

控制器

public function attributeLabels()
{
    return [
        'id' => Yii::t('course', 'ID'),
        'course_code' => Yii::t('course', 'Course Code'),
        'course_type' => Yii::t('course', 'Course Type'),
        'course_title' => Yii::t('course', 'Course Title'),
        'course_unit' => Yii::t('course', 'Course Unit'),
    ];
}

2 个答案:

答案 0 :(得分:0)

如果只想显示其他字段而不在表单提交时发送,则可以将字段标记为disabled

<?= $form->field($modelDetail, 'course_code')->textInput([
    'disabled' => true,
]) ?>

这将呈现无法直接编辑的输入,并且不会在表单提交时发送。

答案 1 :(得分:0)

那么您可以在下拉菜单本身的标签中合并数据,这将是一个更简单的选择。如下对ArrayHelper :: map($ array,$ from,$ to,$ group = null)中的第三个参数使用闭包。

ArrayHelper::map(
  app\modules\course\models\CourseMaster::find()->where(['is_status'=>0])->all(),
  'id',
  function($model){
    return $model['course_title']." - ".$model['course_code'];
  }
)