Я использую элемент checkboxes внутри формы в модуле, который я начал разрабатывать для Drupal 7. Это моя первая попытка разработки модуля и использования API формы. Я создаю список флажков, которые перечисляют все типы контента определенного сайта. Массив всех типов содержимого , может быть получен с помощью следующих функций : $nodeTypesRaw=node_type_get_names();
. Получается массив с машинными именами типов контента в качестве ключей и человекочитаемыми именами в качестве значений.
По умолчанию я бы хотел, чтобы все флажки были установлены и когда форма была отправлена. Как мне этого добиться? Страницы API форм на сайте drupal не очень полезны в отношении установки значений по умолчанию для флажков.
$nodeTypesRaw=node_type_get_names();
$nodeMachineNames=array_keys($nodeTypesRaw);
$form['process_comments']['custommod_published_comments_select_node_types']['custommod_published_comments_node_types_checkboxes']=array(
'#deafult_value'=>$nodeMachineNames,
'#options'=>$nodeTypesRaw,
'#type'=>'checkboxes',
);
Я изначально начал с приведенного выше кода, но он не будет работать. Он отображает список флажков, но по умолчанию они не отмечены. Переменная попадает при отправке формы (проверяется с помощью drush и var_dump).
#default_value
не так#deafult_value
. FA не AF.Ответы:
С Drupal.org :
Значение по умолчанию устанавливается как массив, представляющий ключи выбранных опций.
Глядя на код в вашем вопросе, проблема с правописанием. вы устанавливаете,
'#deafult_value'
когда хотите установить'#default_value'
.источник
$nodeTypesRaw=node_type_get_names();
. Получается массив с машинными именами типов контента в качестве ключей и человекочитаемыми именами в качестве значений. Когда я устанавливаю '# default_value` с помощью переменной$nodeMachineNames=array_keys($nodeTypesRaw);
, флажки остаются не отмеченными.В качестве значения по умолчанию необходимо указать массив ключей параметров (не значений), например
источник
#default_value
как подсказывает @ Молотform_process_checkbox
иform_process_checkboxes
из Drupal 7 и нет механизма , который позволил бы это работать, и, конечно , это не работает для меня. github.com/drupal/drupal/blob/7.x/includes/form.inc#L3270-L3351user_account_form
например, тот же метод используется там для ролей