Rumah  >  Soal Jawab  >  teks badan

Item dalam menu lungsur tersuai tidak berfungsi dengan betul dalam Yii 2

<p>Saya sedang mencipta fungsi senarai lungsur saya sendiri dalam Yii 2. Saya telah mencipta fungsi dan pandangan dan dalam paparan saya mempunyai berbilang item dalam borang lungsur turun saya. </p> <pre class="brush:php;toolbar:false;"><?= $form->customDropDown($dpForm, 'color', [ 'item' => [ 'label' => 'merah', 'value' => 'merah', 'pilihan' => 'style' => 'warna: merah' ] ] [ 'label' => 'biru', 'value' => 'biru', 'pilihan' => 'style' => 'warna: biru' ] ] ] </pra> <p>Fungsi yang saya buat adalah seperti berikut (ia menggunakan dan terletak dalam ActiveForm): </p> <pre class="brush:php;toolbar:false;"> fungsi awam CustomDropdown($model, $attribute, $items = [], $options = []) { $value = Html::getAttributeValue($model, $attribute); $field = $this->field($model, $attribute, $options); kembalikan $this->staticOnly ? $field : $field->dropDownList($items); } </pra> <p>Masalahnya ialah apabila saya membuka lungsur turun saya, semuanya adalah pilihan atau sekumpulan pilihan, bukan hanya pilihan dengan label dan gaya. </p> <p>Kesan paparan dalam <em>Inspektor</em> <pre class="brush:html;toolbar:false;"><optgroup label='0'> <nilai pilihan="label">merah</option> <nilai pilihan="nilai">merah</option> </optgroup> <optgroup label="pilihan"> <nilai pilihan="gaya">warna: merah</option> </optgroup> </pra> <p>Dan seterusnya. Kesan yang saya mahukan adalah seperti berikut: </p> <pre class="brush:html;toolbar:false;"><option value="merah"style="warna: merah">merah</option> </pra> <p>Tetapi saya nampaknya tidak dapat mencapai kesan ini. </p>
P粉268284930P粉268284930433 hari yang lalu551

membalas semua(1)saya akan balas

  • P粉801904089

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

    Untuk mencapai output yang diingini, di mana setiap item dalam menu lungsur diwakili oleh satu teg <option> dengan label, nilai dan gaya yang ditentukan, anda perlu mengubah suai kod anda seperti berikut: Dalam fail paparan anda, kemas kini panggilan fungsi customDropDown untuk menghantar tatasusunan item dengan betul:

    <?= $form->customDropDown($dpForm, 'color', [
            [
                'label' => 'red',
                'value' => 'red',
                'options' => [
                    'style' => 'color: red'
                ]
            ],
            [
                'label' => 'blue',
                'value' => 'blue',
                'options' => [
                    'style' => 'color: blue'
                ]
            ],
        ]
    ); ?>
    Kaedah dikemas kini:
    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);
    }
    Dalam versi yang dikemas kini ini, kami menghantar tatasusunan $options terus kepada dropDownList方法,并使用array_columnEkstrak pasangan nilai-label daripada tatasusunan $items

    balas
    0
  • Batalbalas