将您要禁用的单个项目转换为空<optgroup>
。
优点:
- 可以
hook_form_alter
在构建自定义表单时直接或直接完成此操作,无需theme_select
在主题中实现功能。
缺点:
- 无法在结果DOM中表示
value='title'
与原始属性相关联的属性<option>
。
- YMMV(如果要尝试禁用已经与optgroup相关的选项)。嵌套的optgroup确实可以工作,但这未经测试和证实。
实现方式:
Drupal中的Optgroup在#options
数组内部表示为key => value
值本身就是数组的任何对。
因此,根据OP中的示例,我们将移动的值t('Titles only')
成为key
,然后使该值成为一个空数组。
$form['feed'] = array(
'#type' => 'select',
'#title' => t('Display of XML feed items'),
'#options' => array(
t('Titles only') => array(), // This one becomes disabled as an empty optgroup
'teaser' => t('Titles plus teaser'),
'fulltext' => t('Full text'),
),
'#description' => t('Global setting for the length of XML feed items that are output by default.'),
);
生成的HTML将如下所示:
<form>
<div>
<label>Display of XML feed items</label>
<select>
<optgroup>Titles only</optgroup>
<option value="teaser">Titles plus teaser</option>
<option value="fulltext">Full text</option>
</select>
</div>
</form>