前に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クラスのIMHOを書き換えるよりはましです。
UPDATE
コアチームがイベントを包んcustomer_address_validation_after
から条件起動中1.9.0
を通して1.9.1.1
私の解決策は、これらのバージョンでは動作しませんので、残念ながら、(私には意味がありませんなぜ私は本当に...不思議)。条件付きは幸運にもで削除されました1.9.2
。