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


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.