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