В моем раскрывающемся списке Yii2 мне нужно, чтобы мой столбец «id» был значением моих опций, а столбец «name» - тем, что пользователь видит в опции выбора. - PullRequest
0 голосов
/ 14 мая 2018

В моем выпадающем списке Yii2 мне нужно, чтобы мой столбец 'id' был значением моих опций, а столбец name - тем, что пользователь видит в выпадающем списке выбора

Мой код выводит следующее:

<select id="gatewayproviders-id" class="form-control" name="GatewayProviders[id]">
<optgroup label="0">
<option value="id">Authorize.net</option>
</optgroup>
<optgroup label="1">
<option value="id">NMI</option>
</optgroup>
</select>

Однако я хочу вывести ниже:

<select id="gatewayproviders-id" class="form-control" name="GatewayProviders[id]">
<option value="1">Authorize.net</option>
<option value="2">NMI</option>
</select>

Мой код yii2, который генерирует это ниже:

<?php
    $gatewayTypes = \app\models\GatewayProviders::find()->select('gateway_provider')->orderBy('gateway_provider')->asArray()->all();
    $gatewayProviders = new \app\models\GatewayProviders();
    ?>
    <?= $form->field($gatewayProviders, 'id')->dropDownList(\app\models\GatewayProviders::find()->select(['id' => 'gateway_provider'])->orderBy('id')->asArray()->all())?>

Любая помощь по этому вопросу будет принята с благодарностью!

1 Ответ

0 голосов
/ 14 мая 2018

Вы должны использовать ArrayHelper::map() для создания карты типов (имена индексируются по идентификаторам):

<?php
$gatewayProviders = new \app\models\GatewayProviders();
$gatewayTypes = \app\models\GatewayProviders::find()
    ->select(['id', 'gateway_provider'])
    ->orderBy('gateway_provider')
    ->asArray()
    ->all();
$types = \yii\helpers\ArrayHelper::map($gatewayTypes, 'id', 'gateway_provider');
?>
<?= $form->field($gatewayProviders, 'id')->dropDownList($types)?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...