एक फॉर्म के लिए कस्टम सत्यापन?


30

मुझे एक फ़ॉर्म में कस्टम सत्यापन जोड़ने की आवश्यकता है, जो आलेख प्रपत्र जोड़ने की सुविधा देता है।

मैं कुछ hook_FORM_ID_validate()इस तरह से संभालने की उम्मीद कर रहा था , लेकिन एपीआई प्रलेखन में कुछ भी निर्भर नहीं मिल सकता है।

किसी प्रपत्र में कस्टम सत्यापन जोड़ने का तरीका क्या है?

जवाबों:


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 सत्यापन फ़ंक्शन हैं। फिर ड्रुपल 7 में पहली वरीयता कौन सी है?
गुरु

कौन सा कभी सरणी @Guru में पहला है
क्लाइव

यदि फॉर्म user_registration_form है, तो यह हमेशा "[#validate] => Array ([0] => user_account_form_validate [1] => user_validate_picture") रखता है। मान लीजिए कि मैं कस्टम सत्यापन जोड़ने जा रहा हूं। फिर यह इस तरह होना चाहिए "[#validate] => एरे ([0] => user_account_form_validate [1] => user_validate_picture [2] => user_regidate_validate)"। लेकिन मैं पहली बार "user_register_validate" फ़ंक्शन चलाना चाहता हूं।
गुरु

अन्य क्षेत्रों के लिए, आपको उपयोग करने के लिए मिला:if ($form_state['values']['field_custom']['und'][0]['value'] == 'Error') { //throw error }
क्रिस हैप्पी

आकार के लिए सत्यापन कैसे सेट करें, इस तरीके से विस्तार करें? और एक और सवाल, अगर "अपलोड" और "हटाने" जैसी अजाक्स कार्यक्षमता है तो हम इसके लिए सत्यापन कैसे संभालेंगे?
स्टेनिया

6

आपको hook_form_alterअपने फ़ंक्शन को #validateसंपत्ति में उपयोग और जोड़ना चाहिए ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.