3

Joomla 2.5のドロップダウンリストのいくつかの選択オプションにHTML属性を追加しようとしていますが、自分でHTMLを作成するのではなく、組み込みのHTMLヘルパーを使用したいと考えています。現在の出力は次のとおりです。

<select>
    <option value="Red">Red</option>
</select>

しかし、私はそれを次のようなものにしたいと思います:

<select>
    <option value="Red" data-img="red.jpg">Red</option>
</select>

選択したオプションが変更されたときにJavascriptを使用してdata-img属性にアクセスできるようにします。

私は次のような選択オプションを作成しています:

$select = JHtml::_('select.option', "Red", "Red");

次に、それらをJHTMLに渡して、汎用リストHTMLを作成します。

$html = JHTML::_('select.genericlist', ...);

ドキュメントを調べて、さまざまなパラメータを関数に渡してみましたが、関数が使用するすべてのオプション(など)の点で非常に混乱してoption.attrおりattr、Googleも何も見つけていません。

<option>要素に追加の属性を適切に追加するために関数に渡す必要のある追加のパラメーターを誰かに教えてもらえますか?

前もって感謝します!

4

2 に答える 2

4

今日、私はこの正確なシナリオに苦労しており、select のオプションで余分なデータを追加する必要がありました。joomla/libraries/joomla/html/html/select.php ファイルを徹底的に分析した後、いくつかのマイナス面でこれを行うことに成功しました...

まず、私の場合、選択に使用されるデータはデータベースからのものであり、このシナリオの準備が必要です:

$db =& JFactory::getDBO();
$sql = 'SELECT  nom AS value , nom AS text, prix FROM #__reservation_nourritures order by `ordering` asc';
$db->setQuery($sql);
$nourritures = $db->loadObjectList();
foreach ($nourritures as $nourriture){
    //the data to use MUST be in an array form for the extra html attributes...
    $nourriture->data = array('data'=>$nourriture->prix);
}

データの準備ができたら、それを JHTML 関数に渡して select を構築できます。

echo JHTML::_('select.genericlist',$nourriture,'myId',array('class'=>'nourritures','option.attr'=>'data'));

つまり、オプションに属性を挿入するには、'option.attr' を使用する必要があります。注 : select.genericlist 関数は、これが機能するために 3 つの引数のみを持たなければなりません。関数から私が理解していることから、関数に正確に3つの引数を渡した場合にのみ属性がオプションにマージされ、それ以外の場合は無視されます。したがって、例として、追加のパラメーターを使用して事前に選択されたオプションを定義したい場合は、運が悪いです。関数のこれに関する部分は次のとおりです。

if (is_array($attribs) && func_num_args() == 3)
{
    // Assume we have an options array
    $options = array_merge($options, $attribs);
}

私の理解では、これはバグまたは悪い動作です。時間ができたら、joomla トラッカーのバグに記入します。

于 2012-06-12T18:15:26.947 に答える