इससे पहले कि 1.8.1
मुझे इस काम को करने के किसी भी तरीके के बारे में पता नहीं है, आपको या तो स्थानीय कोड पूल में अमूर्त कोर क्लास को ओवरराइड करना होगा या फिर हर एक बच्चे की क्लास को लिखना होगा (बदसूरत, मुझे पता है)।
से 1.8.1
पर, वे घटना की शुरुआत की customer_address_validation_after
। मुझे प्रतिशोध का उपयोग करके मान्यता से छुटकारा मिल गया, भले ही मुझे इस पर गर्व न हो। आपकी समस्या का समाधान नहीं हो सकता है, लेकिन मुझे लगा कि मैं इसे वैसे भी पोस्ट करूंगा।
/**
* Validate address ignoring phone-related errors
*
* Internally uses reflexion. Maybe not the most
* efficient or clean implementation, but allows
* this functionality to be implemented without
* the need to rewrite 3 core classes.
*
* Listens to:
* - customer_address_validation_after
*
* @param Varien_Event_Observer $observer Event observer
*/
public function validateAddress(Varien_Event_Observer $observer)
{
/* @var $address Mage_Customer_Model_Address_Abstract */
$address = $observer->getAddress();
if (!$address) {
return;
}
$prop = new ReflectionProperty('Mage_Customer_Model_Address_Abstract', '_errors');
if (!$prop) {
return;
}
$prop->setAccessible(true);
$errors = $prop->getValue($address);
$prop->setValue($address, array());
$errorMessage = $this->getErrorMessage();
foreach ($errors as $error) {
if ($error !== $errorMessage) {
$address->addError($error);
}
}
}
/**
* Get standard error message
*
* @return string
*/
protected function getErrorMessage()
{
return Mage::helper('customer')->__('Please enter the telephone number.');
}
मैंने दायर की गई आवश्यकता को परिभाषित करने के लिए एक अद्यतन स्क्रिप्ट भी लिखी, और फ्रंटेंड सत्यापन को हटाने के लिए सभी रूपों को संपादित किया। जैसा कि मैंने कहा, यह सबसे अच्छा समाधान नहीं हो सकता है, लेकिन यह 3-4 वर्गों आईएमएचओ को फिर से लिखने से बेहतर है।
अद्यतन
कोर टीम घटना लिपटे customer_address_validation_after
से एक सशर्त शुरुआत में 1.9.0
के माध्यम से 1.9.1.1
(मैं वास्तव में क्यों, मेरे लिए कोई मतलब नहीं है ...) मेरी समाधान तो इन संस्करणों के लिए काम करते नहीं, दुर्भाग्य से होगा। सशर्त सौभाग्य से हटा दिया गया था 1.9.2
।