Разрешить только числовой почтовый индекс Magento
-
12-12-2019 - |
Вопрос
Я уже ответил на этот вопрос для внешней проверки PostCode: Проверка почтового индекса не работает должным образом
Как я могу добавить проверку на стороне сервера?Спасибо.
Решение
Вы можете использовать мероприятие customer_address_validation_after
. Это событие уволено во время функции подтверждения по адресу модели и передал рассматриваемый адрес.
Mage::dispatchEvent('customer_address_validation_after', array('address' => $this));
.
Что вы можете сделать здесь, проверьте, является ли атрибут почтового индекса NUMIC, с помощью того, что когда-либо означает, что вы хотите, а затем использовать функцию Add Erruction, доступную в классе GeneracodicCode.
Во-первых, вам понадобится модуль, который имеет определение моделей и определение событий в этом config.xml.
Тогда вам нужно будет создать модель наблюдателя. В настоящее время у нас будет только одна функция. Один определен для использования событием в вашем config.xml.
Ваш код может выглядеть что-то вроде следующего.
$address = $observer->getAddress();
if (postcode is not valid) {
$address->addError(Mage::helper('customer')->__('Please enter a valid postcode'));
}
.
Несколько хороших ссылок для понимания событий:
- http://www.magentocommerce.com/wiki/ 5 _-_ modules_and_development / 0 _-_ module_development_in_magento / custommance_magento_using_event-sounter_method
- http://inchoo.net/ecommerce/magento / Magento-Event-Engine-Programming-Tips-Ticks /
- http://www.pierrefay.com/event-observers- Magento-Turorial - Howto-105
Другие советы
Я могу придумать хотя бы одно место, где можно проверить это на стороне сервера.Вы можете сделать это в контроллере, чтобы перенаправить клиента обратно на страницу с мигающим сообщением о том, что поле формы неверно.
В Mage_Customer_AddressController::formPostAction()
, вы можете проверить значение почтового индекса и проверить, является ли это числом.Если нет, перенаправьте клиенту флэш-сообщение.
// Pseudocode
// After validating the form key...
$postcode = $this->getRequest()->getParam('code');
if (!is_numeric($postcode)) {
// redirect to form/where user came from
}
// continue as usual
Вы можете заполнить код.Вам также необходимо будет указать любые другие формы, в которых вводятся почтовые индексы.Поскольку вы не сказали конкретно, это один из них, который вы можете изменить.