Antes que 1.8.1
eu não tenha conhecimento de nenhuma maneira de fazer isso funcionar, você deve substituir a classe principal abstrata no pool de códigos local ou reescrever todas as classes filho (feias, eu sei).
A partir 1.8.1
de então, eles apresentaram o evento customer_address_validation_after
. Eu me livrei da validação usando a reflexão, mesmo que não tenha muito orgulho disso. Pode não resolver o seu problema, mas pensei em publicá-lo de qualquer maneira.
/**
* 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.');
}
Também escrevi um script de atualização para definir o arquivado como não obrigatório e editei todos os formulários para remover a validação de front-end. Como eu disse, pode não ser a melhor solução, mas é melhor do que reescrever o IMHO de 3-4 classes.
ATUALIZAÇÃO
A equipe principal envolveu o evento customer_address_validation_after
em uma partida condicional 1.9.0
através de 1.9.1.1
(eu realmente pergunto por que, não faz sentido para mim ...) para que a minha solução não vai funcionar para essas versões, infelizmente. Felizmente, o condicional foi removido 1.9.2
.