2012-06-06 45 views
2

我想向Joomla 2.5中的下拉列表中的某些選擇選項添加額外的HTML屬性,並且想要使用內置的HTML助手而不是自己寫HTML。電流輸出是:添加屬性以選擇Joomla中的選項

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

,但我想它是這樣的:

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

,這樣我可以使用JavaScript所選擇的選項更改時訪問數據IMG屬性。

我創建了選擇的選項,如下所示:

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

,然後將它們傳遞給JHTML創造了泛型列表HTML:

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

我已經通過的文件看,並試圖將各種不同的參數傳遞給函數,但它在函數使用的所有選項(option.attrattr等)方面都非常混亂,Google也沒有任何變化。

任何人都可以告訴我什麼額外的參數,我需要傳遞給函數來正確地將其他屬性添加到<option>元素?

在此先感謝!

+1

說「Joomla 2.5中的下拉列表」含糊不清會是一種輕描淡寫。 Joomla中有數百個,所以更具體的東西可能會引發某人的回答。 – GDP

+0

問題是關於用於構建選擇列表的HTML幫助程序函數,而不是Joomla的一部分,因此我不能更具體。 – Persata

+0

夠公平的。問題包括「...下拉式選擇...」,這意味着你有一些特別的想法,沒有任何例子可以解釋它是什麼。 – GDP

回答

4

我今天在這個確切的場景中掙扎着,需要在選擇的選項中添加一些額外的數據。在對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函數來構建選擇:

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跟蹤器中填寫一個bugg。

+0

是的 - 該代碼完美工作,直到您添加超過3個參數的函數調用,然後額外的選項不輸出。這將解釋爲什麼我不能工作 - 我的函數調用需要超過3個參數。好找!驚訝這沒有出現過,我希望它可以得到修復。謝謝! – Persata

相關問題