J'ai un formulaire, généré automatiquement par un type de contenu. Je veux exécuter une fonction form_submit pour saisir/modifier certaines données à enregistrer dans la base de données.
Le type de contenu a déjà ces champs configurés, mais je veux qu'ils soient déterminés dans une fonction form_submit plutôt que via une entrée utilisateur.
Je peux obtenir une fonction de soumission de formulaire, mais je ne sais pas comment ajouter au tableau de valeurs soumis sans avoir à écrire la requête entière moi-même. Quelles variables dois-je saisir et comment les modifier pour ce faire?
Pour être plus précis .. dans le form_alter, cela fait ce que je veux. $form["field_org_id"]["und"][0]['value']['#default_value'] = $org->id;
Mais comment faire l'équivalent hors site dans le formulaire_submit? (il s'agit d'un formulaire d'ajout de contenu et en espérant ne pas réécrire l'intégralité de la requête)
$form['#submit'][]='my_submit'
Et écrivez votre code:
function my_submit($form, &$form_state) {
// your code
}
La fonction FORM_FUNCTION_submit () se déclenche automatiquement lorsque le formulaire avec la fonction de générateur de préfixe est soumis:
function generate_special_form(){ // this function name is "FORM_FUNCTION" above
$form = array();
$form['field_org_id'] = array(
'#type' => 'textfield',
'#title' => 'Organisation',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Submit',
);
return $form;
}
Lorsque cette fonction soumet, elle appelle automatiquement la fonction generate_special_form_submit () avec 2 paramètres, vous pouvez obtenir les valeurs soumises comme ceci:
function generate_special_form_submit($form, &$form_state){
// Form above was submitted, now lets clean up $form_state['values'],
// that's the submitted values in an associative array.
form_state_values_clean($form_state);
// And here is the value that was submitted:
drupal_set_message($form_state['values']['field_org_id']);
}
Il semble que vous tentiez de modifier un formulaire généré en core. Si c'est le cas, utilisez hook_form_alter pour ajouter la valeur $ form ['# submit'] comme le contour Jibran ci-dessus.