Form için özel doğrulama?


30

Bir forma özel doğrulama eklemem gerekiyor, yazalım makale formu ekleyelim.

Bunu hook_FORM_ID_validate()halletmek gibi bir şey bekliyordum , ancak API belgelerinde ilgili hiçbir şey bulamıyorum.

Bir forma özel doğrulama eklemenin yolu nedir?

Yanıtlar:


57

Herhangi bir forma istediğiniz hook_form_FORM_ID_alter()gibi herhangi bir sayıda doğrulama işlevi ekleyebilirsiniz :

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

Zaten 2 doğrulama fonksiyonu olan bir forma özel form doğrulama eklediğimi varsayalım. O zaman drupal 7'de ilk tercih hangisidir?
— Guru

Şimdiye kadar @Guru dizisinde ilk olan
— Clive

Form user_registration_form ise, her zaman "[#validate] => Array ([0] => user_account_form_validate [1] => user_validate_picture)" tutar. Özel doğrulama ekleyeceğimi varsayalım. O zaman şöyle olmalı "[#validate] => Array ([0] => user_account_form_validate [1] => user_validate_picture [2] => user_register_validate)". Ama önce "user_register_validate" işlevini çalıştırmak istiyorum.
— Guru

Diğer alanlar için, şunları kullanmanız gerekir:if ($form_state['values']['field_custom']['und'][0]['value'] == 'Error') { //throw error }
— Chris Happy

Bu şekilde, boyut, uzatma için doğrulama nasıl ayarlanır? Ve bir soru daha, eğer "upload" ve "remove" gibi bir ajax işlevi varsa bunun doğrulamasını nasıl ele alıyoruz?
— steniya

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.