web-dev-qa-db-fra.com

comment obtenir toutes les valeurs dans un formulaire d'édition

Je veux voir toutes les valeurs dans mon formulaire d'édition, j'ai essayé dsm($form_state->getValues()) mais je ne reçois rien.
si je fais dsm($form_state) Je reçois trop de choses à regarder.

quelle est la syntaxe correcte pour obtenir uniquement les valeurs de mon formulaire dans la page d'édition.

3
Diana

La form_state->getValues() ne fonctionne que pendant le processus de validation et de soumission. Au lieu de cela, vous devez rechercher la variable $form Pour les valeurs. Malheureusement, vous ne pouvez pas obtenir toutes les valeurs facilement, vous devez creuser dans le formulaire lui-même:

$form['title']['widget'][0]['value']['default_value'];

EDIT J'étais en train d'étudier cela plus et il pourrait y avoir un moyen plus propre.

Vous devez d'abord obtenir l'objet formulaire à partir de la variable $form_state. À partir de là, vous pouvez utiliser la fonction getEntity() pour obtenir réellement l'entité que le formulaire modifie. Ensuite, si vous voulez obtenir une valeur, vous pouvez utiliser la méthode get('field_name') ou si vous voulez que toutes les valeurs utilisent toArray()

// Get the entire node as an array and will include all values
$node = $form_state->getFormObject()->getEntity()->toArray();

ou

// Get the entity object
$node = $form_state->getFormObject()->getEntity();

// Get the field
$node->get('field_my_field');

// Get the field as a string (returns value)
$node->get('field_my_field')->getString();
7
chadpeppers

Si je comprends bien la question, un moyen rapide de le faire est de passer un tableau vide à getValue(). Par exemple:

$form_values = $form_state->getValue(array());

Cela renverra également des éléments tels que des éléments d'objet, mais il ne devrait pas être difficile de le couper uniquement aux valeurs souhaitées.

0
Ynhockey