2016-11-07 13 views
1

如果我有一個表在MySQL這樣的:Yii2選擇下拉菜單中的文字

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 請指點

回答

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

+0

謝謝,它的工作原理,但在wbraganca動態表單有點怪異,微調仍然加載 –

0

我想你應該在選擇和使用別名進行級聯

<?= 
    $form->field($model, 'type_id')->dropDownList(
      ArrayHelper::map(TipeKaryawan::find()-> 
        select(' id, concat(nama_tipe, level) as description ')->all(), 
         'id', 'description'), ['prompt' => 'Select tipe'] 
    ) 
?> 
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'])?> 
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']); ?>