一部の要件については、送信ハンドラーを形成するために追加情報を渡す必要があります。フォームAPIで、カスタム送信ハンドラーを次のように定義します
$additional_args = array();
$form['#submit'][] = 'my_submit_handler'
ハンドラーを次のように送信する予定です
function my_submit_handler($form, &$form_state, $additional_args){
一部の要件については、送信ハンドラーを形成するために追加情報を渡す必要があります。フォームAPIで、カスタム送信ハンドラーを次のように定義します
$additional_args = array();
$form['#submit'][] = 'my_submit_handler'
ハンドラーを次のように送信する予定です
function my_submit_handler($form, &$form_state, $additional_args){
送信ハンドラーはdrupalfapiによって呼び出されるため、そのようなことはできません。代わりに、あなたができることは、あなたが必要とするものを$form
、またはのいずれかに追加することです$form_state
。通常のアプローチは次のとおりです。
フォームにフィールドを追加し、値を入力して値を保存します。フォーム定義に値がある場合は、これを行わないでください。
$form['store'] = array(
'#type' => 'value',
'#value' => $value
);
これはで利用可能になります$form_state['values']['store']
。
$form_state['storage']
検証ハンドルの変数を送信ハンドラーに転送する場合は、に値を追加します。
// Validation.
$form_state['storage']['value'] = $value;
...
// Submit
$value = $form_state['storage']['value'];
// Need to unset stored values when not used anymore.
unset($form_state['storage']['value']);
Drupal 7:カスタム引数は自動的に伝播されます$ form_state ['build_info']['args']これはhttp://api.drupal.org/api/drupal/includes!form.inc/function/drupal_get_form/7で述べられています
元:
hook_form($form, &$form_state, $myAdditionnalArg) {...}
その後、
hook_form_submit($form, &$form_state) {
...
//$form_state['build_info']['args']
は、インデックス0に引数の値を含む配列$myAdditionnalArg
です...
$form['#submit']と$form['#validate']と$form['#process']で報告されているように、カスタムパラメータはサポートされなくなりました。次に示すように、送信ハンドラセットにパラメータを渡すための推奨される方法です。コードは、次のようなコードを使用することです。
$form['#first_paramater'] = $value;
$form['#submit'][] = 'my_submit_handler';
ハンドラーは値をとして取得します$form['#first_paramater']
。の代わりに#first_paramater
、コードは別の文字列を使用できますが、で始まる必要があることに注意してください#
。
通常、コードのように送信ハンドラーを設定する必要はありませんが、別のモジュールで作成されたフォームを変更したり、に存在する送信ボタンごとに異なる送信ハンドラーを設定したりする必要がある場合があります。形。
drupal_retrieve_form()は、フォームビルドハンドラーに渡されたパラメーターを保存します$form['#parameters']
。
$form_id
$form_state