yii2 在下拉列表中插入 2 个参数作为文本

yii2 inserting 2 params as text inside dropdownlist

这是 yii2 下拉列表。

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

它使下拉列表包含 param1s 的值和可供选择的 param2s 文本。 所以你看到 param2 texts ,选择一个并且相应的 param1 值转到服务器。

不,我的问题是我想做同样的事情,但不仅向用户显示 param2 文本,而且我希望从 param2+param3.

构造文本

我想要的示例。

隐藏value___________text

1_____________________alpha

2_____________________bravo

3_____________________lima

隐藏value___________text

1_____________________alpha-红色

2_____________________bravo-白色

3_____________________lima-蓝色

这可能吗?

其中一种方法是使用带有 toArray() 方法的内置 ArrayHelper。

将此放入您的模型中:

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()) ?>