web-dev-qa-db-ja.com

フォームのカスタム検証?

カスタム検証をフォームに追加する必要があります。記事のフォームを追加します。

hook_FORM_ID_validate()のようなものがこれを処理することを期待していましたが、APIドキュメントで関連するものを見つけることができません。

フォームにカスタム検証を追加する方法は何ですか?

29
gilzero

次のように、 hook_form_FORM_ID_alter() の任意のフォームに任意の数の検証関数を追加できます。

function mymodule_form_article_node_form_alter(&$form, &$form_state, $form_id) {
  // There will already be some validate handlers added so you need to add to the
  // array rather than overwrite it.
  $form['#validate'][] = 'mymodule_article_form_validate';

  // As mentioned above you can add as many as you want
  $form['#validate'][] = 'mymodule_article_form_validate_2';
}

function mymodule_article_form_validate($form, &$form_state) {
  // Random example, if the title is 'test' throw an error
  if ($form_state['values']['title'] == 'test') {
    form_set_error('title', 'Title cannot be "test"');
  }
}
57
Clive

hook_form_alterを使用して、関数を #validate プロパティに追加する必要があります。

6
Countzero