さまざまな理由で、_validateではなく_submitフックで検証している複合体があります。これは、error
クラスがフォーム要素に追加されないことを除いてうまく機能しています。
足りない単純なものはありますか、それともform_get_errors
を使用して自分でクラスを設定する必要がありますか?
(送信時に検証を行う理由は、フォームデータが有効かどうかに関係なく保存したいためです。)
最も簡単な方法は、フォームにエラーがある場合、検証ステップでフォームデータを保存することです。
function form_validate(&$form, &$form_state) {
// Validate
if (form_get_errors()) {
// This code is only run if the form has errors.
// Save the form data
db_query("...");
}
}
次に、エラーを発生させてdrupalに実行させ、送信機能を使用目的に使用します。有効なフォームデータを処理します。
データを処理する必要がある場合は、検証ステップでも実行できます。これは、$form_state
配列の情報がフォーム送信ハンドラーに送信されるためです。