Les éléments du menu déroulant personnalisé ne fonctionnent pas correctement dans Yii 2
P粉268284930
2023-09-05 22:16:18
<p>Je crée ma propre fonction de liste déroulante dans Yii 2. J'ai créé une fonction et une vue et dans la vue j'ai plusieurs éléments dans mon formulaire déroulant. </p>
<pre class="brush:php;toolbar:false;"><?= $form->customDropDown($dpForm, 'color', [
'articles' =>
[
'étiquette' => 'rouge',
'valeur' => 'rouge',
'options' =>
'style' => 'couleur : rouge'
]
]
[
'étiquette' => 'bleu',
'valeur' => 'bleu',
'options' =>
'style' => 'couleur : bleu'
]
]
]
≪/pré>
<p>La fonction que j'ai créée est la suivante (elle utilise et se trouve dans ActiveForm) : </p>
<pre class="brush:php;toolbar:false;"> fonction publique customDropdown($model, $attribute, $items = [], $options = [])
{
$value = Html::getAttributeValue($model, $attribute);
$champ = $this->champ($modèle, $attribut, $options);
return $this->staticOnly ? $field : $field->dropDownList($items);
}
≪/pré>
<p>Le problème est que lorsque j'ouvre ma liste déroulante, tout est une option ou un groupe d'options, pas seulement les options avec des étiquettes et des styles. </p>
<p>L'effet d'affichage dans <em>Inspector</em> est le suivant :</p>
<pre class="brush:html;toolbar:false;"><optgroup label='0'>
<valeur d'option="étiquette">rouge</option>
<valeur d'option="valeur">rouge</option>
</groupe opt>
<optgroup label="options">
<valeur de l'option="style">couleur : rouge</option>
</groupe opt>
≪/pré>
<p>Et ainsi de suite. L'effet que je souhaite est le suivant : </p>
<pre class="brush:html;toolbar:false;"><option value="red" style="couleur : rouge">rouge</option>
≪/pré>
<p>Mais je n’arrive pas à obtenir cet effet. </p>
Afin d'obtenir le résultat souhaité, où chaque élément de la liste déroulante est représenté par une seule balise
Méthode mise à jour : Dans cette version mise à jour, nous transmettons le tableau $options directement à<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 fonctioncustomDropDown
pour transmettre correctement le tableau items :dropDownList
方法,并使用array_column
Extraire les paires étiquette-valeur du tableau $items