Прежде чем 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
.