Maison > Questions et réponses > le corps du texte
P粉8019040892023-09-06 14:29:43
Afin d'obtenir le résultat souhaité, où chaque élément de la liste déroulante est représenté par une seule balise <option>
avec l'étiquette, la valeur et le style spécifiés, vous devez modifier votre code comme suit :
Dans votre fichier de vue, mettez à jour l'appel de fonction customDropDown
pour transmettre correctement le tableau items :
<?= $form->customDropDown($dpForm, 'color', [ [ 'label' => 'red', 'value' => 'red', 'options' => [ 'style' => 'color: red' ] ], [ 'label' => 'blue', 'value' => 'blue', 'options' => [ 'style' => 'color: blue' ] ], ] ); ?>Méthode mise à jour :
public function customDropdown($model, $attribute, $items = [], $options = []) { $value = Html::getAttributeValue($model, $attribute); $field = $this->field($model, $attribute); $options['options'] = array_column($items, 'options'); $options['prompt'] = ''; return $this->staticOnly ? $field : $field->dropDownList(array_column($items, 'label', 'value'), $options); }Dans cette version mise à jour, nous transmettons le tableau $options directement à
dropDownList
方法,并使用array_column
Extraire les paires étiquette-valeur du tableau $items