Zanim 1.8.1
nie będę wiedział, jak to zrobić, musisz albo zastąpić abstrakcyjną klasę rdzeniową w lokalnej puli kodów, albo przepisać każdą klasę potomną (brzydkie, wiem).
Odtąd 1.8.1
przedstawili to wydarzenie customer_address_validation_after
. Pozbyłem się sprawdzania poprawności za pomocą refleksji, nawet jeśli nie jestem z tego zbyt dumny. Może nie rozwiążę twojego problemu, ale pomyślałem, że i tak go opublikuję.
/**
* 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.');
}
Napisałem również skrypt aktualizacji, aby zdefiniować plik jako niepotrzebny, i zredagowałem wszystkie formularze, aby usunąć weryfikację interfejsu użytkownika. Jak powiedziałem, może nie być to najlepsze rozwiązanie, ale jest lepsze niż przepisywanie 3-4 klas IMHO.
UPDATE
Zespół rdzeń owinięty wydarzenie customer_address_validation_after
w ramach warunkowego począwszy od 1.9.0
pośrednictwem 1.9.1.1
(Naprawdę zastanawiam się, dlaczego nie ma sensu do mnie ...), więc moje rozwiązanie nie będzie działać dla tych wersji, niestety. Warunek został na szczęście usunięty 1.9.2
.