カスタムドロップダウンメニューの項目が Yii 2 で正しく動作しない
P粉268284930
2023-09-05 22:16:18
<p>Yii 2 で独自のドロップダウン リスト関数を作成しています。関数とビューを作成しました。ビューにはドロップダウン フォームに複数の項目があります。 </p>
<pre class="brush:php;toolbar:false;"><?= $form->customDropDown($dpForm, 'color', [
'アイテム' =>
[
'ラベル' => '赤'、
'値' => '赤'、
'オプション' => [
'スタイル' => '色: 赤'
]
]
[
'ラベル' => '青'、
'値' => '青'、
'オプション' => [
'スタイル' => '色: 青'
]
]
]
</pre>
<p>私が作成した関数は次のとおりです (ActiveForm を使用し、ActiveForm に配置されています): </p>
<pre class="brush:php;toolbar:false;"> public function 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>問題は、ドロップダウンを開くと、ラベルやスタイルを含むオプションだけでなく、すべてがオプションまたはオプションのグループになることです。 </p>
<p><em>Inspector</em> の表示効果は次のとおりです。</p>
<pre class="brush:html;toolbar:false;"><optgroup label='0'>
<option value="label">red</option>
<オプション値="値">赤</オプション>
</optgroup>
<optgroup label="オプション">
<option value="style">色: 赤</option>
</optgroup>
</pre>
<p>など。私が望む効果は次のとおりです:</p>
<pre class="brush:html;toolbar:false;"><option value="red" style="color: red">red</option>
</pre>
<p>しかし、この効果は達成できないようです。 </p>
ドロップダウン内の各項目が、指定されたラベル、値、スタイルを持つ単一の
<option>
タグで表される、目的の出力を実現するには、コードを次のように変更する必要があります。 ビュー ファイルで、customDropDown
関数呼び出しを更新して、項目配列を正しく渡します。 リーリー 更新されたメソッド: リーリー この更新されたバージョンでは、$options 配列をdropDownList
メソッドに直接渡し、array_column
を使用して $items 配列からラベルと値のペアを抽出します。