Antes de 1.8.1
que no conozca ninguna forma de hacer que esto funcione, debe anular la clase principal abstracta en el grupo de códigos local o reescribir cada clase secundaria (fea, lo sé).
A partir 1.8.1
de entonces, presentaron el evento customer_address_validation_after
. Me deshice de la validación usando reflexion, incluso si no estoy demasiado orgulloso de ello. Podría no resolver su problema, pero pensé en publicarlo de todos modos.
/**
* 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.');
}
También escribí un script de actualización para definir el archivo como no requerido, y edité todos los formularios para eliminar la validación de la interfaz. Como dije, puede que no sea la mejor solución, pero es mejor que reescribir 3-4 clases en mi humilde opinión.
ACTUALIZACIÓN
El equipo central envuelto el evento customer_address_validation_after
en una partida condicional 1.9.0
a través de 1.9.1.1
(me pregunto por qué, no tiene sentido para mí ...) así que mi solución no funcionará para estas versiones, por desgracia. El condicional fue eliminado por suerte 1.9.2
.