양식에 대한 사용자 정의 유효성 검사?


30

양식에 사용자 지정 유효성 검사를 추가해야한다고 기사 양식을 추가하겠습니다.

나는 hook_FORM_ID_validate()이것을 처리하는 것과 같은 것을 기대하고 있었지만 API 문서에서 관련된 것을 찾을 수 없습니다.

양식에 사용자 지정 유효성 검사를 추가하는 방법은 무엇입니까?

답변:


57

다음 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"');
  }
}

이미 2 개의 유효성 검사 기능이있는 양식에 사용자 지정 양식 유효성 검사를 추가했다고 가정합니다. 그렇다면 drupal 7에서 우선적으로 선호되는 것은 무엇입니까?
Guru

@Guru
Clive

양식이 user_registration_form 인 경우 항상 "[#validate] => 배열 ([0] => user_account_form_validate [1] => user_validate_picture)"을 유지합니다. 사용자 지정 유효성 검사를 추가한다고 가정합니다. 그런 다음 "[#validate] => 배열 ([0] => user_account_form_validate [1] => user_validate_picture [2] => user_register_validate)"와 같아야합니다. 하지만 처음에는 "user_register_validate"기능을 실행하고 싶습니다.
Guru

다른 분야에서는 다음을 사용해야합니다.if ($form_state['values']['field_custom']['und'][0]['value'] == 'Error') { //throw error }
Chris Happy

이 방법으로 크기, 확장에 대한 유효성 검사를 설정하는 방법은 무엇입니까? 그리고 또 하나의 질문은 "업로드"및 "제거"와 같은 아약스 기능이 있다면이를위한 유효성 검사를 어떻게 처리 하는가?
steniya

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.