Dans Drupal 6, nous pourrions utiliser PHP pour définir les valeurs par défaut, mais le même code ne peut pas être utilisé avec Drupal 7 .
J'essaie de le faire via hook_form_alter()
, mais le code ne fonctionne pas.
function my_form_alter(&$form, &$form_state, $form_id) {
dsm($form);
switch($form_id) {
case 'accounts_node_form':
$form["field_accounts"]["und"]['#default_value'] = $default;
// …
break;
}
}
En supposant que votre fonction alter form est en cours d'exécution (ce que vous pouvez confirmer avec cet appel à dsm()
), il y a en fait 2 autres niveaux de tableau dans lesquels vous devez descendre pour accéder à l'élément field:
$form["field_accounts"][LANGUAGE_NONE][0]['value']['#default_value'] = $default;
Dans Drupal 7, vous avez un tableau de valeurs pour chaque langue dans laquelle le champ a été traduit (de sorte que les champs avec une cardinalité multiple/illimitée peuvent être pris en charge), et sous chacun d'eux se trouve dans tableau pour les différentes colonnes de champ différentes. Dans la majorité des cas, ce sera "valeur" mais pas toujours (par exemple, un champ d'image a une colonne d'ID de fichier, une colonne alt, etc.)
J'espère que cela pourra aider
C'est correct:
function my_form_alter(&$form, &$form_state, $form_id) {
dsm($form);
switch($form_id) {
case 'accounts_node_form':
$form["field_accounts"][LANGUAGE_NONE][0]['value']['#default_value'] = $default;
// …
break;
}
}
Cela fonctionne bien:
function my_form_alter(&$form, &$form_state, $form_id) {
dsm($form);
switch($form_id) {
case 'accounts_node_form':
$form["field_accounts"]["und"][0]['value']['#default_value']=$default;
break;
}
}