Estoy usando un elemento de casillas de verificación dentro de un formulario en el módulo que comencé a desarrollar para Drupal 7. Este es mi primer intento de desarrollo del módulo y uso de la API del formulario. Estoy creando una lista de casillas de verificación que enumeran todos los tipos de contenido de un sitio específico. Una matriz de todos los tipos de contenido se puede obtener mediante la siguiente: $nodeTypesRaw=node_type_get_names();
. Una matriz con los nombres de máquina de los tipos de contenido como claves y los nombres legibles por humanos a medida que se obtienen los valores.
Por defecto, me gustaría que todas las casillas de verificación estén seleccionadas y cuando se envíe el formulario. ¿Cómo lo logro? Las páginas de API de formulario en el sitio de drupal no son muy útiles para establecer los valores predeterminados para las casillas de verificación.
$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',
);
Inicialmente comencé con el código anterior, pero no funcionará. Muestra la lista de casillas de verificación, pero no están marcadas de forma predeterminada. Sin embargo, la variable se presenta en el envío del formulario (verificada mediante drush y var_dump).
#default_value
, no#deafult_value
. FA no AF.Respuestas:
De Drupal.org :
El valor predeterminado se establece como una matriz que representa las claves de las opciones seleccionadas.
Mirando el código en su pregunta, el problema es con la ortografía. está configurando
'#deafult_value'
cuando desea configurar'#default_value'
.fuente
$nodeTypesRaw=node_type_get_names();
. Una matriz con los nombres de máquina de los tipos de contenido como claves y los nombres legibles por humanos a medida que se obtienen los valores. Cuando configuro el '# default_value` usando la variable$nodeMachineNames=array_keys($nodeTypesRaw);
, las casillas de verificación permanecen sin marcar.Debe proporcionar una matriz de teclas de opción (no valores) como el valor predeterminado, p. Ej.
fuente
#default_value
como sugiere @ Mołotform_process_checkbox
yform_process_checkboxes
de Drupal 7 y no hay ningún mecanismo que permita para que esto funcione, y por supuesto no funciona para mí. github.com/drupal/drupal/blob/7.x/includes/form.inc#L3270-L3351user_account_form
por ejemplo, el mismo método se utiliza allí para los roles