php - 在 Joomla 中添加属性以选择选项

标签 php html joomla

我正在尝试向 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.attrattr 等)而言,它非常困惑,谷歌已经出现也没有。

任何人都可以告诉我需要传递给函数哪些额外参数才能正确地将额外属性添加到 <option>元素?

提前致谢!

最佳答案

我今天在这个确切的场景上苦苦挣扎,需要使用选择的选项添加一些额外的数据。在对 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 跟踪器中填写错误。

关于php - 在 Joomla 中添加属性以选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10918584/

相关文章:

html - 如何确保我需要登录的网站可以被搜索引擎爬虫等访问?

php - 用户登录后 Codeigniter 重定向到所需的 url

php - Apple 推送服务器不工作,由单个 token 引起

php - 如何保存响应式菜单打开/关闭值?

javascript - 如何用 jQuery 选择每第 n 个字符的父元素?

html - 我在 Expression Web 4 中使用 2 列模板 - 如何保持边栏大小相等?

html - 如何将一张图片对齐到另一张图片的底部?

joomla - 使用 Joomla 和 Google Apps 发送电子邮件

php - MySQL/PHP 按行值合并行

php - 在 MySql 中生成查询