2015-05-12 19 views
0

这里是yii2下拉列表。yii2插入2个参数作为文本里面的下拉列表

<?php echo $form->field($model, 'param1')->dropDownList(
      ArrayHelper::map(Model::find()->all(),'param1','param2'); 

它使参数1和文本的值从下拉列表中选择param2s。 所以你看param2文本,选择一个和相应的param1值去服务器。

没有我的问题是,我想要做同样的事情,但不仅显示用户param2文本,但我想要构建文本从param2 + param3

我想要的例子。

隐藏value___________text

1_____________________alpha

2_____________________bravo

3_____________________lima

隐藏value___________text

1 _____________________的α-红色

2 _____________________ bravo- 白色

3 _____________________ lima- 蓝色

这可能吗?

+0

[在同一行多个值的concat下拉列表]的可能的复制(HTTP://计算器.com/a/27769661/428543) – topher

回答

1

其中一种方法可以使用内置的ArrayHelper和toArray()方法。

在你的模型将这个:

use yii\helpers\ArrayHelper; 

... 

public static function getList() 
{ 
    $initialModels = static::find()->all(); 
    $models = ArrayHelper::toArray($initialModels, [ 
     'app\models\YourModel' => [ 
      'param1', 
      'combinedParam' => function ($model) { 
       return "$model->param2 - $model->param3"; 
      }, 
     ], 
    ]); 

    return ArrayHelper::map($models, 'param1', 'combinedParam'); 
} 

显示它在视图:

<?= $form->field($model, 'param1')->dropDownList(YourModel::getList()) ?> 
+0

公共静态函数getList()抛出错误“语法错误,意外'公共'(T_PUBLIC)” – David

+0

你放置它的地方?检查语法是正确的 - 花括号等 – arogachev

+0

右内视图 只需复制粘贴你的函数 – David