Validasi khusus untuk formulir?


30

Saya perlu menambahkan validasi khusus ke formulir, mari kita katakan menambahkan formulir artikel.

Saya mengharapkan sesuatu hook_FORM_ID_validate()untuk menangani ini, tetapi tidak dapat menemukan sesuatu yang relevan dalam dokumentasi API.

Apa cara menambahkan validasi khusus ke formulir?

Jawaban:


57

Anda dapat menambahkan sejumlah fungsi validasi ke dalam bentuk apa pun hook_form_FORM_ID_alter()seperti:

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

Misalkan saya telah menambahkan validasi formulir kustom ke formulir yang sudah memiliki 2 fungsi validasi. Lalu yang mana yang mendapatkan preferensi pertama di drupal 7?
— Guru

Yang mana yang pertama dalam array @Guru
— Clive

Jika bentuknya adalah user_registration_form, maka ia selalu menyimpan "[#validate] => Array ([0] => user_account_form_validate [1] => user_validate_picture)". Misalkan saya akan menambahkan validasi khusus. Maka seharusnya seperti ini "[#validate] => Array ([0] => user_account_form_validate [1] => user_validate_picture [2] => user_register_validate)". Tetapi saya ingin menjalankan fungsi "user_register_validate" pada awalnya.
— Guru

Untuk bidang lain, Anda harus menggunakan:if ($form_state['values']['field_custom']['und'][0]['value'] == 'Error') { //throw error }
— Chris Happy

cara mengatur validasi untuk ukuran, ekstensi dengan cara ini? Dan satu pertanyaan lagi, jika ada fungsi ajax seperti "unggah" dan "hapus" bagaimana kami menangani validasi untuk ini?
— steniya

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.