मैं एक ज़ेंडफ्रेमवर्क एप्लिकेशन का निर्माण कर रहा हूं जो एक लॉगिन फॉर्म के रूप में एक ईमेल पता और पासवर्ड मांग रहा है - लॉगिन प्रयास के साथ डेटाबेस को मारने से पहले ईमेल पते को सत्यापित करना समझ में आया, क्योंकि एक अवैध ईमेल कभी वैध नहीं होगा मारो। Zend_Validate_EmailAddress जाने का सही तरीका प्रतीत होता है, लेकिन मुझे इसके साथ एक समस्या है जिसमें कई त्रुटियां उत्पन्न होती हैं (कोड के बाद नीचे, प्रश्न)।एक Zend_Form में, Zend_Validate_Email से कई त्रुटियों को उत्पन्न करने से कैसे बचें?
// WPMail_AuthController::loginAction()
$this->view->form = $form;
और ध्यान में रखते हुए, यह सीधे echo'd है:
मेरे फ़ॉर्म वर्तमान में
//WPMail_Form_Login::init()
$email = $this->addElement('text', 'email', array(
'label'=>'Email',
'required'=>true,
'filters'=>array('stringtrim'),
'validators'=>array(array('emailaddress', true, array(
'messages'=>array(
'emailAddressInvalidHostname'=>'Your email address is invalid',
'emailAddressInvalidFormat'=>'Your email address is invalid',
'...'=>'(repeat for all message templates)'
)
))),
));
नियंत्रक में निम्नलिखित मैं सीधे दृश्य में प्रपत्र पारित है
// views/scripts/auth/login.phtml
<?php echo $this->form ?>
परिणाम वर्तमान में ऐसा कुछ है:
- Your email address is invalid
- 'asda!!!' does not match the expected structure for a DNS hostname
- 'asda!!!' does not appear to be a valid local network name
जो मैं जानना चाहता हूं वह है: क्या ज़ेंड _
को कॉन्फ़िगर करना संभव है _
ईमेल एड्रेस इस तरह से सत्यापित करें कि यह केवल एक ईमेल-अमान्य त्रुटि उत्पन्न करता है? 'कॉन्फ़िगर' से मेरा मतलब है, कक्षा को विस्तारित किए बिना और तर्क के साथ तर्क को ओवरराइड करना।
टीआईए।
अद्भुत, धन्यवाद! मैं वास्तव में उस पर आया, लेकिन किसी भी तरह यह माना जाता है कि एक त्रुटि संदेश जोड़ना फॉर्म को अमान्य कर देगा (जैसा कि यह आपके स्वयं के सत्यापन के हिस्से का हिस्सा है) .. यह देखकर खुशी हुई कि यह आसान है! – kander
यह भ्रमित हो सकता है .. $ ईमेल-> addError ($ message) एक त्रुटि सेट करेगा और अमान्य के रूप में चिह्नित होगा, लेकिन $ ईमेल-> addErrorMessage ($ message) बस संदेश सेट करने के लिए प्रतीत होता है, जो डिफ़ॉल्ट को ओवरराइड करता है, और करता है एक त्रुटि सेट नहीं है! – simonrjones
+1, ज्ञान टिप के लिए धन्यवाद – Ish