Quelle est la difference entre drupal_get_form()
et drupal_retrieve_form()
? Quelqu'un peut-il expliquer la différence? Je regarde l'API, mais la description me semble similaire.
10
Quelle est la difference entre drupal_get_form()
et drupal_retrieve_form()
? Quelqu'un peut-il expliquer la différence? Je regarde l'API, mais la description me semble similaire.
drupal_retrieve_form()
votre code peut accéder à la mise$form_state
à jour telle qu'elle est passée par référence, maisdrupal_get_form()
renvoyez simplement le$form
, pas l'état.Réponses:
La différence est que
drupal_get_form()
gère la récupération, le traitement et l'affichage automatique d'un formulaire HTML rendu pour les modules, tout endrupal_retrieve_form()
renvoyant le tableau structuré qui définit un formulaire.Récupération du formulaire
drupal_get_form()
vérifie d'abord si le formulaire est présent dans le cache de formulaire avec form_get_cache () ; s'il n'est pas présent, il appelle drupal_retrieve_form () et drupal_prepare_form () .Traitement du formulaire
drupal_get_form()
appelle drupal_process_form () , qui est la fonction qui appelle drupal_validate_form () , et qui appelle les gestionnaires de soumission avec form_execute_handlers () .Rendu du formulaire
Le rendu est effectué à partir de
drupal_process_form()
, qui appelle form_builder () .Dans la plupart des cas,
drupal_get_form()
c'est la fonction à utiliser, comme dans le code suivant.Le seul module que j'ai trouvé qui appelle
drupal_retrieve_form()
directement est le module Mollom dans mollom_moderate () , qui l'utilise pour soumettre automatiquement un formulaire. Le code pourrait utiliser drupal_form_submit () , mais (comme le dit un commentaire), "Les soumissions de formulaires programmatiques ne peuvent pas utiliser automatiquement le bouton / l'action de soumission de formulaire principal, nous devons donc ressemblerdrupal_form_submit()
."la source