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-। শ্রেণির আইএমএইচও-র পুনর্লিখনের চেয়ে ভাল।
আপডেট
কোর দলগত ইভেন্টে আবৃত customer_address_validation_after
থেকে একটি শর্তাধীন শুরুর মধ্যে 1.9.0
দিয়ে 1.9.1.1
(আমি সত্যিই ভাবছি কেন আমার কাছে কোন জ্ঞান করে তোলে ...) আমার সমাধান তাই এই সংস্করণের জন্য কাজ না, দুর্ভাগ্যবশত হবে। শর্তসাপেক্ষে ভাগ্যক্রমে সরানো হয়েছিল 1.9.2
।