2011-06-12 15 views
2

フォームの検証に失敗したときにフォーム入力をクリアできません。Drupal 7でフォームの検証が失敗したときにフォーム入力をクリアする

たとえば、フォームにラジオボタン要素があり、その中に2つのグループがあり、チェックされていない場合、フォーム検証関数はエラーをスローします。ユーザーが最初のグループを選択したが2番目のグループを選択しなかった場合、エラーがスローされます。グループ1の以前に選択されたラジオボタンがクリアされるようにフォーム入力をクリアする方法を知りたいと思います。

これは、あなたがform_stateをきれいに検証機能を追加する必要がありますDrupalの7

+0

私はこの質問はすでにここに回答されていると信じています。http: //stackoverflow.com/questions/9235164/change-form-data-after-submit-in-drupal – Dewayne

+0

これは別の質問です。もう1つの質問では、フォームが検証を渡して送信機能に到達しています。この質問は、フォームデータをhook_validateからフォーム機能に変更する方法です。 –

答えて

-1

で行われている...

function my_module_form_FORM_ID_alter(&$form, &$form_state, $form_id) { 
    $form['#validate'][] = 'my_module_clear_values_validate'; 
} 

function my_module_clear_values_validate($form, &$form_state) { 
    if ($form_state['submitted']) { 
    $form_state['values']['field_my_field'][LANGUAGE_NONE][0]['value'] = 'WHATEVS'; 
    } 
} 
+0

実際には機能しません。 –

+0

実際にカールはありますか?これは標準的なものですが、私はフォーム処理を管理するために多くのサイトに渡って使用しています。私はあなたがテストする前にキャッシュをクリアしなかったか、フォームを出力して空にしなければならなかったフィールドを見つけるのを邪魔しなかったと思います。あなたはおそらくDevelを介して 'dsm($ form)'を使ってフォームを検査したいでしょう。 – doublejosh

+0

Carlのコメントを確認する - これは機能しません。あなたの解決策は、入力値を(* "WHATEVS"に)変更するために働きますが、値をクリアする*には機能しません。 – aaronbauman

関連する問題