Heim  >  Fragen und Antworten  >  Hauptteil

Elemente im benutzerdefinierten Dropdown-Menü funktionieren in Yii 2 nicht richtig

<p>Ich erstelle meine eigene Dropdown-Listenfunktion in Yii 2. Ich habe eine Funktion und eine Ansicht erstellt und in der Ansicht befinden sich mehrere Elemente in meinem Dropdown-Formular. </p> <pre class="brush:php;toolbar:false;"><?= $form->customDropDown($dpForm, 'color', [ 'items' => [ 'label' => 'rot', 'Wert' => 'rot', 'Optionen' => 'style' => 'Farbe: rot' ] ] [ 'label' => 'blau', 'Wert' => 'blau', 'Optionen' => 'style' => 'Farbe: blau' ] ] ] </pre> <p>Die von mir erstellte Funktion lautet wie folgt (sie verwendet ActiveForm und befindet sich darin): </p> <pre class="brush:php;toolbar:false;"> öffentliche Funktion customDropdown($model, $attribute, $items = [], $options = []) { $value = Html::getAttributeValue($model, $attribute); $field = $this->field($model, $attribute, $options); return $this->staticOnly ? $field : $field->dropDownList($items); } </pre> <p>Das Problem ist, dass wenn ich mein Dropdown-Menü öffne, alles eine Option oder eine Gruppe von Optionen ist, nicht nur die Optionen mit Beschriftungen und Stilen. </p> <p>Der Anzeigeeffekt in <em>Inspector</em> <pre class="brush:html;toolbar:false;"><optgroup label='0'> <option value="label">red</option> <option value="value">red</option> </optgroup> <optgroup label="optionen"> <option value="style">Farbe: rot</option> </optgroup> </pre> <p>Und so weiter. Der gewünschte Effekt ist wie folgt: </p> <pre class="brush:html;toolbar:false;"><option value="red"color: red">red</option> </pre> <p>Aber ich kann diesen Effekt anscheinend nicht erzielen. </p>
P粉268284930P粉268284930433 Tage vor550

Antworte allen(1)Ich werde antworten

  • P粉801904089

    P粉8019040892023-09-06 14:29:43

    为了实现所需的输出,其中下拉列表中的每个项目都由一个具有指定标签、值和样式的单个<option>标签表示,您需要按照以下方式修改您的代码: 在您的视图文件中,更新customDropDown函数调用以正确传递items数组:

    <?= $form->customDropDown($dpForm, 'color', [
            [
                'label' => 'red',
                'value' => 'red',
                'options' => [
                    'style' => 'color: red'
                ]
            ],
            [
                'label' => 'blue',
                'value' => 'blue',
                'options' => [
                    'style' => 'color: blue'
                ]
            ],
        ]
    ); ?>
    更新的方法:
    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);
    }
    在这个更新的版本中,我们直接将$options数组传递给dropDownList方法,并使用array_column从$items数组中提取标签-值对

    Antwort
    0
  • StornierenAntwort