के खिलाफ उपयोगकर्ता की जानकारी मान्य करें मैं पंजीकरण मॉड्यूल में हुक करना चाहता हूं। मेरे पास पहले से ही 50000 उपयोगकर्ता का डेटाबेस है जो मेरी पुरानी वेबसाइट का उपयोग करते हैं। अब मैं ड्रूपल में प्रवास कर रहा हूं।ड्रूपल पंजीकरण में हुक करें और व्यवसाय तर्क
मैंने अभी भी ड्रोपल डेटाबेस में प्रविष्टियों को माइग्रेट नहीं किया है। मैं अपने पुराने डेटाबेस के खिलाफ जांच करूँगा।
जब कोई उपयोगकर्ता ड्रूपल में पंजीकरण करने का प्रयास करता है, तो मुझे यह जांचना होगा कि उसने जो उपयोगकर्ता नाम दिया है वह 50000 (और बढ़ती) प्रविष्टियों की सूची में पहले से मौजूद है या नहीं। यदि यह अस्तित्व में है, तो मुझे पंजीकरण त्रुटि को एक त्रुटि संदेश दिखा रहा है जिसमें कहा गया है कि उपयोगकर्ता नाम मौजूद है ..
मुझे किस हुक का उपयोग करना चाहिए? यदि मेरा कोड आंकड़ा है कि सत्यापन विफल हुआ है, तो मैं त्रुटि संदेश प्रदर्शित करने के लिए ड्रोपल कैसे बता सकता हूं?
संपादित करें: मैंने hook_user में लगाया और 'validate' op के लिए चेक किया। मैं त्रुटि संदेशों को सत्यापित और असाइन करने में सक्षम हूं। लेकिन यह सभी रूपों के लिए हो रहा है। मैं केवल नए खाता निर्माण फॉर्म को प्रमाणित करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?
धन्यवाद। कुछ
// Alter the registration form
function yourModuleName_form_user_register_alter(&$form, &$form_state) {
// Add your own function to the array of validation callbacks
$form['#validate'][] = 'yourModuleName_user_register_validate';
}
// Perform your own validation
function yourModuleName_user_register_validate($form, &$form_state) {
// Extract the submitted name
$name = $form_state['values']['name'];
// Check it according to your own logic
$is_valid_name = your_check_for_valid_name();
// File error, when not valid
if (!$is_valid) {
form_set_error('name', t('Name already taken, please choose a different one'));
}
}
+1 बहुत बहुत धन्यवाद। यह काम करता है, मैं उस विशेष रूप के क्षेत्र (ओं) के लिए सत्यापन सेट करने में सक्षम हूं। मुझे FORM_ID चीज़ के बारे में पता नहीं था, मैंने कुछ अन्य हुक का उपयोग किया था और यह सभी रूपों के लिए चल रहा था: डी – user266803
हालांकि यह एक अच्छा समाधान है, ध्यान रखें कि वर्तमान में ड्रूपल hook_form_FORM_ID_alter के बाद hook_form_alter चलाता है। तो सड़क के नीचे एक मामला हो सकता है जहां एक और मॉड्यूल आपके hook_form_FORM_ID_alter परिवर्तनों को ओवर-राइड करेगा। उस समय का 95% जब आप किसी समस्या में भाग नहीं लेते हैं, लेकिन कुछ कहते हैं कि यह hook_form_alter और स्विच स्टेटमेंट का उपयोग करने के लिए सबसे सुरक्षित है। –
यदि आपका सत्यापन फ़ंक्शन केवल एक फ़ील्ड की जांच कर रहा है, तो इसके बजाय [एलिमेंट वैलिडेशन] (https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#element_validate) फ़ंक्शन बनाने पर विचार करें। – rymo