Yii2选择下拉文字

时间:2016-11-07 13:20:09

标签: yii2

如果我在mysql中有这样的表:

mysql> select * from tipe_karyawan;
+----+-----------+-------+
| id | nama_tipe | level |
+----+-----------+-------+
|  1 | Stylist   |     1 |
|  2 | Stylist   |     2 |
|  3 | Stylist   |     3 |
|  4 | Therapist |     0 |
+----+-----------+-------+
4 rows in set (0.00 sec)

mysql>

我想要显示nama_tipe&等级,所以,我这样创建:

 <?=
$form->field($model, 'type_id')->dropDownList(
        ArrayHelper::map(TipeKaryawan::find()->all(), 'id', 'nama_tipe'.'level'), ['prompt' => 'Select tipe']
)
?>

Yii2说未知财产TipeKaryawan :: nama_tipelevel 请建议

4 个答案:

答案 0 :(得分:0)

试试这个:

<?php 
  $result=ArrayHelper::map(TipeKaryawan::find()->all(), 'id',
  function($model, $defaultValue) {
      return $model['nama_tipe'].'-'.$model['level'];
  }
  );
?>

<?=  $form->field($model, 'type_id')->dropDownList($result  , ['prompt' => 'Select tipe']); ?>

参考:http://www.yiiframework.com/doc-2.0/yii-helpers-basearrayhelper.html#map%28%29-detail

答案 1 :(得分:0)

我认为您应该在select中使用别名并使用别名

vars

答案 2 :(得分:0)

您可以在控制器中创建所需的数组,然后将其发送到视图。 Yii2是MVC。

在控制器中:

$tipes = <Your concatenated array...>;

return $this->render('model' => $model, 'tipes' => $ties);

在视图中:

*/*@var $ties array*/
 <?= $form->field($model, 'type_id')->dropDownList($ties, ['prompt' => 'Select tipe'])?>

答案 3 :(得分:0)

模型中添加下一个功能:

public function getConcatenate() {
   return this->nama_type . ' ' . $this->level;
}

要获取此字段,请执行以下操作:

再次在您的模型中添加:

public static function getList() {
 $cat = TipeKaryawan::find()->all();
 return yii\helpers\ArrayHelper::map($cat, 'id', 'concatenate');
}

查看

<?=  $form->field($model, 'type_id')->dropDownList( TipeKaryawan::getList() ,   ['prompt' => 'Select tipe']); ?>