J'utilise un élément de cases à cocher dans un formulaire dans un module que j'ai commencé à développer pour Drupal 7. C'est ma première tentative de développement de module et d'utilisation de l'API Form. Je crée une liste de cases à cocher répertoriant tous les types de contenu d'un site spécifique. Un tableau de tous les types de contenu peuvent être obtenus en utilisant ce qui suit: $nodeTypesRaw=node_type_get_names();
. Un tableau avec les noms de machine des types de contenu comme clés et les noms lisibles par l'homme comme valeurs sont obtenus.
Par défaut, je souhaite que toutes les cases à cocher soient sélectionnées et lorsque le formulaire est envoyé. Comment puis-je y parvenir? Les pages de l'API Form sur le site drupal ne sont pas très utiles pour définir les valeurs par défaut des cases à cocher.
$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',
);
J'ai d'abord commencé avec le code ci-dessus, mais cela ne fonctionnera pas. Il affiche la liste des cases à cocher, mais elles ne sont pas cochées par défaut. Cependant, la variable est soumise lors de la soumission du formulaire (vérifiée via drush et var_dump).
#default_value
pas le cas#deafult_value
. FA pas AF.Réponses:
De Drupal.org :
La valeur par défaut est définie comme un tableau représentant les clés des options sélectionnées.
En regardant le code dans votre question, le problème est avec l'orthographe. vous définissez
'#deafult_value'
quand vous voulez définir'#default_value'
.la source
$nodeTypesRaw=node_type_get_names();
. Un tableau avec les noms de machine des types de contenu comme clés et les noms lisibles par l'homme comme valeurs sont obtenus. Lorsque j'ai défini la «# valeur_par défaut» à l'aide de la variable$nodeMachineNames=array_keys($nodeTypesRaw);
, les cases à cocher ne sont pas cochées.Vous devez donner un tableau de clés d' option (pas des valeurs) comme valeur par défaut, par exemple
la source
#default_value
comme @ Mołot le suggèreform_process_checkbox
etform_process_checkboxes
de Drupal 7 et il n'y a aucun mécanisme qui permettrait que cela fonctionne, et bien sûr cela ne fonctionne pas pour moi. github.com/drupal/drupal/blob/7.x/includes/form.inc#L3270-L3351user_account_form
par exemple, la même méthode est utilisée là pour les rôles