Formular Handler mit zusätzlichen Argumenten übergeben

7

Für einige Anforderungen muss ich zusätzliche Informationen übergeben, um den Übergabe-Handler zu bilden. In form api, beim Definieren eines benutzerdefinierten Übergabe-Handlers als

%Vor%

Ich erwarte, Handler als

einzureichen %Vor%     
Shoaib Nawaz 13.08.2010, 07:11
quelle

3 Antworten

14

Der Submit-Handler wird von drupal fapi aufgerufen, also kannst du so etwas nicht machen. Stattdessen können Sie hinzufügen, was Sie benötigen, entweder in $form oder in $form_state . Die üblichen Ansätze sind:

  • Ein Feld zum Formular hinzugefügt, geben Sie value ein, um den Wert zu speichern. Tun Sie das nicht, wenn Sie den Wert in der Formulardefinition haben.

    %Vor%

    Dies wird in $form_state['values']['store'] verfügbar sein.

  • Fügen Sie den Wert zu $form_state['storage'] hinzu, wenn die Variablen in Ihrem Validierungs-Handle auf Ihren Submit-Handler übertragen werden sollen:

    %Vor%
googletorp 13.08.2010, 07:45
quelle
9

Drupal 7: Benutzerdefinierte Argumente werden automatisch propagiert $ form_state ['build_info'] ['args'] Dies wird in Ссылка

gesagt

Beispiel:

%Vor%

Dann in

%Vor%

... //$form_state['build_info']['args'] ist ein Array, das bei Index 0 den Wert des Arguments $myAdditionnalArg enthält. ...

    
gipein 04.10.2012 14:34
quelle
4

Wie in $ form ['# submit'] und $ form ['# validate'] und $ form [' #process '] unterstützt keine benutzerdefinierten Parameter mehr . Die vorgeschlagene Methode zum Übergeben von Parametern an einen Submission-Handler-Satz wie im gezeigten Code besteht darin, einen ähnlichen Code wie den folgenden zu verwenden:

%Vor%

Der Handler würde den Wert als $form['#first_paramater'] abrufen. Um festzustellen, dass anstelle von #first_paramater der Code eine andere Zeichenfolge verwenden kann, muss er jedoch mit # beginnen.

Normalerweise ist es nicht notwendig, einen Submission-Handler wie den Code zu definieren, aber es gibt Fälle, in denen es notwendig ist, ein von einem anderen Modul erzeugtes Formular zu ändern oder einen anderen Submission-Handler für jede der Submission-Buttons zu setzen in einer Form präsentieren.

drupal_retrieve_form () speichert die an das Formular übergebenen Parameter Build-Handler in $form['#parameters'] enthält:

  • $form_id
  • $form_state
  • Parameter, die an den Formularbuilder
  • übergeben wurden
kiamlaluno 14.08.2010 12:18
quelle