Form submit Handler mit zusätzlichen Argumenten
Für einige Bedingung, die ich übergeben müssen zusätzliche Informationen in form submit handler. In der form-api, während die Definition von benutzerdefinierten submit-handler als
$additional_args = array();
$form['#submit'][] = 'my_submit_handler'
Erwarte ich auf submit-handler als
function my_submit_handler($form, &$form_state, $additional_args){
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den submit-handler aufgerufen wird, die von der drupal fapi, so können Sie etwas wie das nicht. Stattdessen, was Sie tun können, ist zu ergänzen, was Sie brauchen, entweder zu den
$form
oder die$form_state
. Die üblichen Ansätze:Hinzugefügt wurde ein Feld in das Formular, geben Sie den Wert um den Wert zu speichern. Tun Sie das nicht wenn Sie den Wert in der form-definition.
Diese verfügbar sein wird in
$form_state['values']['store']
.Fügen Sie den Wert
$form_state['storage']
getan, wenn Sie Variablen in Ihre Validierung Griff, den Sie übertragen möchten, um Ihre submit-handler:Drupal 7: Benutzerdefinierte Argumente werden automatisch weitergegeben troug $form_state['build_info']['args']
Das heißt, in http://api.drupal.org/api/drupal/includes!form.inc/function/drupal_get_form/7
Ex:
Dann in
...
//$form_state['build_info']['args']
ist ein array bei index 0, wird der Wert von argument$myAdditionnalArg
...
- Wie berichtet-in $form['#submit'] und $form['#validate'] und $form['#process'] nicht mehr die Unterstützung benutzerdefinierter Parameter, ist der vorgeschlagene Weg, um Parameter an eine Vorlage handler gesetzt, wie in dem gezeigten code ist code verwenden, die der folgenden ähnelt:
Handler würde den Wert abrufen, wie
$form['#first_paramater']
.Zu bemerken, dass, anstatt
#first_paramater
, den code verwenden können, eine andere Zeichenfolge, aber Sie müssen starten, mit#
.Normalerweise ist es nicht notwendig, um eine Vorlage-handler wie der code funktioniert, aber es gibt einige Fälle, wo es notwendig ist, wie zu ändern ein Formular erstellt durch ein anderes Modul oder eine andere Vorlage-handler für jede der Abgabe-buttons in einem Formular vorhanden sind.
drupal_retrieve_form() speichert die Parameter übergeben, um die form zu bauen handler in
$form['#parameters']
enthält:$form_id
$form_state