送信して検証したときに、ノード(node/add/factura-tmn)を作成するためにページにリダイレクトする必要があるフォームがありますが、このページにパラメーターを送信します。出来ますか?
私は現在次のコードを持っています:
function add_invoice_file_form_submit($form, &$form_state) {
$form_state['redirect'] = 'node/add/factura-tmn';
drupal_redirect_form($form_state);
}
解決策は非常に簡単です。
function add_invoice_file_form_submit($form, &$form_state) {
// files validations...
...
$form_state['redirect'] = 'node/add/factura-tmn/' . $fid;
drupal_redirect_form($form_state);
}
function paperless_planning_form_node_form_alter(&$form, $form_state, $form_id) {
if(isset($form['type']) && isset($form['#node'])) {
$type = $form['#node']->type;
switch($type) :
case 'factura_tmn':
$fid = arg(3);
$file = file_load($fid);
...
endswitch;
}
}
変更されたノード追加フォームを使用しないのはなぜですか?これを変更して、必要なフィールドと検証を設定できます。
フォームを処理する場合は、 drupal_form_submit() を使用できます。ドキュメントページで報告されている例は、関数の使用方法を示しています。
_// Register a new user.
$form_state = array();
$form_state['values']['name'] = 'robo-user';
$form_state['values']['mail'] = '[email protected]';
$form_state['values']['pass']['pass1'] = 'password';
$form_state['values']['pass']['pass2'] = 'password';
$form_state['values']['op'] = t('Create new account');
drupal_form_submit('user_register_form', $form_state);
_
フォーム送信ハンドラー内では、drupal_redirect_form()
を呼び出す必要はありません。コードは_$form_state['redirect']
_を設定する必要があるだけです。 system_modules_submit() 、 aggregator_form_opml_submit() 、および comment_multiple_delete_confirm_submitなどのDrupalコアモジュールによって実装されたフォーム送信ハンドラから何が行われるかを確認する() 。