Form API snippet
La Form API Drupal permet de générer des formulaires sous forme de tableau PHP. Vous n’avez pas à coder vos éléments directement en HTML. Cette API très puissante permet de réaliser des formulaires complexes et sur mesure.
Désactiver un champ (ajouter l'attribut disabled)
TRUE : l'élément est affiché mais n'accepte pas les entrées de l'utilisateur.
$form['lorem'] = array(
'#type' => 'textfield',
'#disabled' => TRUE,
);
Rendre un champ obligatoire
TRUE : Indique si une entrée est requise ou non sur l'élément.
$form['lorem'] = array(
'#type' => 'textfield',
'#required' => TRUE,
);
Ajouter une valeur par défaut de l'élément.
$form['lorem'] = array(
'#type' => 'textfield',
'#value' => 'lorem ipsum,
);
Ajouter du js
$form['#attached']['library'][] = 'my_module/form_test';
Ajouter une class
$form['lorem'] = array(
'#type' => 'textfield',
'#attributes' => array(
'class' => array('my_class my_class_2'),
),
);
Ajouter un placeholder
$form['lorem'] = array(
'#type' => 'textfield',
'#attributes' => array(
'placeholder' => 'lorem ipsum'
),
)
HTML5
'#type' => 'tel'
'#type' => 'email'
'#type' => 'number'
'#type' => 'date'
'#type' => 'url'
'#type' => 'search'
'#type' => 'range'
Ajouter un wrapper
$form['lorem'] = array(
'#type' => 'textfield',
'#wrapper_attributes' => ['class' => ['wrapper-input']],
);
Redirection après validation du formulaire.
Dans votre méthode "submitForm" écrivez ci-dessous le code.
"machine_name" est le nom mentionné dans le fichier de routage.
$form_state->setRedirect('machine_name');
return;
Exemple, redirection vers la page d'accueil
$form_state->setRedirect('<front>');
Sélectionner tous les input type checkbox
$form['lorem'] = [
'#type' => 'checkboxes',
'#options' => $options,
// coche toutes les checkbox
'#attributes' => ['checked' => 'checked'],
];
Cocher par défaut un champ checkbox
$form['lorem'] = [
'#type' => 'checkbox',
'#default_value' => '1',
];
Valeur par défaut d'un champ type select
$form['lorem'] = [
'#type' => 'select',
'#options' => [
'1' => 'Hello',
'2' => 'World!'
],
'#default_value' => '2',
];
Limiter la validation sur le bouton retour dans un formulaire Ajax en plusieurs étapes
On utilise '#limit_validation_errors' => []
$form['wrapper-step']['actions']['back'] = [
'#type' => 'submit',
'#name' => 'previous',
'#value' => 'Retour',
'#submit' => ['::decrementStep'],
'#ajax' => [
'callback' => [$this, 'ajaxFormCallback'],
'wrapper' => 'rachat-container',
],
'#attributes' =>
['class' => ['btn btn-primary btn-prev']],
'#limit_validation_errors' => [],
];
Ajouter un wrapper autours d’un élement
On ouvre une div avec la class col-2
avant l’élément email et on ferme cet div après.
$form['email']['#prefix'] = '<div class="col-2 ">';
$form['email']['#suffix'] = '</div>';
Ajouter un commentaire