Önce 1.8.1
bu işi yapmak için herhangi bir şekilde farkında değilim, ya yerel kod havuzunda soyut çekirdek sınıfını geçersiz kılabilir veya her çocuk sınıfını (çirkin, biliyorum) yeniden yazmak gerekir.
Ondan 1.8.1
sonra etkinliği tanıttılar customer_address_validation_after
. Çok gurur duymasam bile, yansıma kullanarak doğrulamadan kurtuldum. Sorununuzu çözemez, ama yine de göndereceğimi düşündüm.
/**
* 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.');
}
Ben de dosyalanmış gerekli olmayan tanımlamak için bir güncelleme komut dosyası yazdım ve ön uç doğrulama kaldırmak için tüm formları düzenledi. Dediğim gibi, bu en iyi çözüm olmayabilir, ancak 3-4 sınıf IMHO'yu yeniden yazmaktan daha iyidir.
GÜNCELLEME
çekirdek takımı olayı sarılmış customer_address_validation_after
bir şartlı başlıyor içindeki 1.9.0
aracılığıyla 1.9.1.1
(Gerçekten ... bana hiç mantıklı neden merak) benim çözüm yüzden olacak maalesef bu sürümler için değil iş. Şartlı şans eseri kaldırıldı 1.9.2
.