web-dev-qa-db-fra.com

Je ne peux pas définir une valeur par défaut sur hook_form_alter ()

J'ai une autre forme pour le user_register_form qui est appelée. Dans ce crochet, j'essaie de définir une valeur par défaut pour un champ de texte mais cela ne fonctionne pas. J'ai essayé toute la syntaxe possible #default_value, #value, value, default_value, événement dans le tableau d'attributs.

Ceci est mon code.

function pre_registration_form_user_register_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  $form['field_code_postal']['#cache']['max-age'] = 0;
  $form['field_code_postal']['#default_value'] = 'COUCOU';
  $form['field_code_postal']['#value'] = 'COUCOU';
  $form['field_code_postal']['value'] = 'COUCOU';
  $form['field_code_postal']['value']['#value'] = 'COUCOU';
  $form['field_code_postal']['value']['#default_value'] = 'COUCOU';
  $form['field_code_postal']['value']['value'] = 'COUCOU';
  $form['field_code_postal']['value']['default_value'] = 'COUCOU';
  $form['field_code_postal']['default_value'] = 'COUCOU';

  $form['field_code_postal']['#attributes']['value'] = 'COUCOU1';
  $form['field_code_postal']['#attributes']['#value'] = 'COUCOU2';
  $form['field_code_postal']['#attributes']['default_value'] = 'COUCOU3';
  $form['field_code_postal']['#attributes']['#default_value'] = 'COUCOU4';
}

Comment puis-je définir une valeur par défaut?

4
Greg__

Selon cette documentation vous pouvez faire quelque chose comme

 $form['field_code_postal']['widget'][0]['value']['#default_value'] ='COUCOU1';

et pour un autre gars, aidez si vous voulez remplir le champ référencé d'entité (les fichiers sont également une entité en drupal 8) utilisez

 $form['field_image']['widget'][0]['target_id']['#default_value']= $file; // 
4
Yusef

Pour mon cas, je voulais un titre de nœud automatique par défaut pour mon type de contenu personnalisé et voici comment je l'ai obtenu: après avoir connu l'ID du nœud_form que je voulais modifier ci-dessous hook_form_FORM_ID_alter(), je produis le contenu qui constitue le champ de titre par kint($form['title']); après cela, j'ai pu déterminer la structure du tableau pour le champ de titre du formulaire et je l'ai obtenu par le code ci-dessous: $form['title']['widget'][0]['value']['#default_value'] = 'my custom node title'; (Drupal 8.4x)

2
Nicholas

Dans mon cas, le code ci-dessous fonctionnait parfaitement dans Drupal 8:

$form['field_idea_department']['widget'][0]['value']['#default_value'] = "default values";
0
shifali baghel