4

Joomla 2.5 の JHtml ジェネリック リストの個々のオプションにデータ属性を追加する必要があります。

標準の html では、選択リストは次のようになります。

<select class="field" placeholder="<?php echo JText::_('COUNTRY')?>" name="country" id="country" autofocus="autofocus" autocorrect="off" autocomplete="off">
    <option value="" selected="selected">Select Country</option>
    <option value="Afghanistan" data-alternative-spellings="AF">Afghanistan</option>
    <option value="Åland Islands" data-alternative-spellings="AX Aaland Aland" data-relevancy-booster="0.5">Åland Islands</option>
    <option value="Albania" data-alternative-spellings="AL">Albania</option>
...
</select>

通常、オプションを作成するときは次のようにします。

$options=array();
$options[]=JHTML::_( 'select.option', "Afghanistan", "Afghanistan" );
$options[]=JHTML::_( 'select.option', "Albania", "Albania" );
...

 $dropdown = JHTML::_('select.genericlist',$options,'country','id="country" autofocus="autofocus" autocorrect="off" autocomplete="off"','value','text',$default);

各オプションに data-alternative-spellings="AF" を追加するにはどうすればよいですか?

ありがとう

4

1 に答える 1

13

それは実際に可能です:

$data = array(
    array(
        'value' => 'redapple',
        'text' => 'Red apple',
        'attr' => array('data-price'=>'5'),
    ),
    array(
        'value' => 'greenapple',
        'text' => 'Green apple',
        'attr' => array('data-price'=>'3'),
    ),
);

$options = array(
    'id' => 'applesfield', // HTML id for select field
    'list.attr' => array( // additional HTML attributes for select field
        'class'=>'field-apples',
    ),
    'list.translate'=>false, // true to translate
    'option.key'=>'value', // key name for value in data array
    'option.text'=>'text', // key name for text in data array
    'option.attr'=>'attr', // key name for attr in data array
    'list.select'=>'greenapple', // value of the SELECTED field
);

$result = JHtmlSelect::genericlist($data,'apples',$options);

これにより、次のようになります。

<select id="applesfield" name="apples" class="field-apples">
    <option value="redapple" data-price="5">Red apple</option>
    <option value="greenapple" data-price="3" selected="selected">Green apple</option>
</select>

説明: genericlist(): 'option.attr' のオプションを設定する必要があることがわかったとき、すでにJHtmlSelectを拡張してgenericlist()をオーバーライドしていました。

JHtmlSelect::genericlist() のパラメーターはかなり複雑ですが、単純です: 3 番目のパラメーターが配列であり、それが渡す最後のパラメーターである場合、genericlist のオプションを設定するために使用されます。

「option.attr」は、オプションの追加属性のキーを設定します。これが設定されている場合、上記の$data配列に示されているように、オプションに好きなだけ属性を追加できます。

于 2014-01-17T15:05:59.013 に答える