Chuyển đổi một mục duy nhất bạn muốn vô hiệu hóa thành một mục trống <optgroup>
.
Ưu điểm:
- Điều này có thể được thực hiện trong một
hook_form_alter
hoặc trực tiếp khi xây dựng biểu mẫu tùy chỉnh của bạn, không cần phải thực hiện một theme_select
chức năng trong chủ đề của bạn.
Nhược điểm:
- Không có cách nào để biểu diễn
value='title'
thuộc tính được liên kết với bản gốc <option>
trong DOM kết quả.
- YMMV nếu bạn đang cố gắng vô hiệu hóa một tùy chọn đã liên quan đến một nhóm chọn. Các nhóm opted lồng nhau thực sự có thể hoạt động, nhưng điều này chưa được kiểm tra và chưa được xác nhận.
Thực hiện:
Các nhóm quang trong Drupal được ký hiệu bên trong #options
mảng là bất kỳ key => value
cặp nào trong đó giá trị tự nó là một mảng.
Vì vậy, từ ví dụ trong OP, chúng ta sẽ di chuyển giá trị t('Titles only')
để trở thành key
và sau đó làm cho giá trị là một mảng trống.
$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 kết quả sẽ trông giống như thế này:
<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>