Sebelum 1.8.1
saya tidak mengetahui cara apa pun untuk membuat pekerjaan ini, Anda harus mengganti kelas inti abstrak di kumpulan kode lokal atau menulis ulang setiap kelas anak tunggal (jelek, saya tahu).
Sejak 1.8.1
saat itu, mereka memperkenalkan acara tersebut customer_address_validation_after
. Saya menyingkirkan validasi dengan menggunakan refleksi, meskipun saya tidak terlalu bangga akan hal itu. Mungkin tidak menyelesaikan masalah Anda, tapi saya pikir saya tetap akan mempostingnya.
/**
* 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.');
}
Saya juga menulis skrip pembaruan untuk mendefinisikan arsip yang tidak diperlukan, dan mengedit semua formulir untuk menghapus validasi frontend. Seperti yang saya katakan, ini mungkin bukan solusi terbaik, tetapi lebih baik daripada menulis ulang 3-4 kelas IMHO.
UPDATE
Tim inti dibungkus acara customer_address_validation_after
di awal bersyarat dari 1.9.0
melalui 1.9.1.1
(saya benar-benar bertanya-tanya mengapa, tidak masuk akal bagi saya ...) jadi solusi saya tidak akan bekerja untuk versi ini, sayangnya. Syaratnya untungnya dihapus di 1.9.2
.