Item dalam menu lungsur tersuai tidak berfungsi dengan betul dalam Yii 2
P粉268284930
P粉268284930 2023-09-05 22:16:18
0
1
554
<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粉268284930
P粉268284930

membalas semua(1)
P粉801904089

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan