Пожалуйста, можете кто-нибудь опубликовать руководство по удалению «обязательного» телефонного поля при оформлении заказа на основе макета magento версии 1.8.0.0, большинство текущих ресурсов гугла устарели и больше не работают. Казалось бы, это идеальное место, чтобы хранить обновленные инструкции / руководство.
Было бы полезно, если бы кто-нибудь мог подтвердить рабочее решение, загрузив Magento 1.8.0.0 и предоставив подтверждение его удаления, эти фрагменты кода иногда бывают полезны, но нам еще предстоит найти рабочее решение в удобном для чтения / документирования виде.
Ответы:
Прежде чем
1.8.1
я не узнаю ни о каких способах заставить это работать, вы должны либо переопределить абстрактный базовый класс в локальном пуле кода, либо переписать каждый отдельный дочерний класс (безобразно, я знаю).С
1.8.1
этого момента они представили событиеcustomer_address_validation_after
. Я избавился от проверки с помощью рефлексии, даже если я не слишком горжусь этим. Может не решить твою проблему, но я все равно решил написать.Я также написал скрипт обновления, чтобы определить, что поле не является обязательным, и отредактировал все формы, чтобы удалить проверку внешнего интерфейса. Как я уже сказал, это может быть не лучшим решением, но это лучше, чем переписывать 3-4 класса ИМХО.
ОБНОВЛЕНИЕ Основная команда завершила событие
customer_address_validation_after
условно, начиная с1.9.0
конца1.9.1.1
(мне действительно интересно, почему, для меня это не имеет смысла ...), поэтому мое решение не будет работать для этих версий, к сожалению. Условно был удален в1.9.2
.источник
Вам нужно будет изменить
Mage_Customer_Model_Address_Abstract
класс * в строке 375-377, комментируя Zend Validation для номера телефона.а также сам телефонный атрибут в базе данных, удаляющий требуемый класс. Это можно сделать с помощью следующего запроса
Это позаботится о проверке внешнего интерфейса (Javascript) телефонных полей.
** Обязательно скопируйте файл класса в
local
каталог кода *источник
eav_attribute
с кодом «телефон», поэтому вы не можете сказать, какая из них была обновлена. Тогда код должен работать (только что проверил). Что касается визуальной части, вам все равно нужно удалить<em>*</em>
в метке поля все формы (оформить заказ / редактировать адрес). Конечно, если у вас установлена какая-то пошаговая проверка, это может переопределить некоторые функции Magento по умолчанию, и этот ответ может не сработать.Я бы предложил изменить шаблон адреса для темы сайта и сделать телефон скрытым полем со значением по умолчанию пробел или тире. Это не потребует переписывания / перезаписи.
источник
Не могли бы вы просто переписать классы, использующие реферат, используя собственное расширение, а конфигурацию переписать.
Mage_Sales_Model_Quote_Address
,Mage_Customer_Model_Address
,Mage_Sales_Model_Order_Address
,Затем вы можете создать свою собственную
validate
функцию, которая исключит проверку телефона или, что еще лучше, проверит все необходимые атрибуты и подтвердит, что они установлены.источник
Я только что столкнулся с милым небольшим расширением "Webguys_Telefonkeinpflicht" Тоби, которое в основном следует подходу Дэвида. Переписывает соответствующие подклассы. Что мне очень нравится, так это то, что оно отправляет событие только в переписанных классах, а вся дальнейшая настройка выполняется в обозревателе событий. Он также наблюдает за
core_block_abstract_to_html_after
событием, чтобы удалить звезду и требуемый класс из поля ввода с помощью некоторого регулярного выражения черной магии. И, конечно, он поставляется со скриптом настройки, который делает атрибут телефона не обязательным вeav_attribute
таблице. Вы можете проверить расширение на GitHub .источник