ก่อนที่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 คลาส IMHO
อัปเดต
ทีมหลักปิดเหตุการณ์customer_address_validation_after
ด้วยเงื่อนไขโดยเริ่มจาก1.9.0
ผ่าน1.9.1.1
(ฉันสงสัยจริงๆว่าทำไมไม่มีเหตุผลกับฉัน ... ) ดังนั้นโซลูชันของฉันจะไม่ทำงานสำหรับเวอร์ชันเหล่านี้โชคไม่ดี 1.9.2
เงื่อนไขจะถูกลบออกโชคดีใน