Alguien podría publicar una guía sobre la eliminación del campo de teléfono 'requerido' en el proceso de pago basado en el diseño de magento Versión 1.8.0.0, la mayoría de los recursos buscados en Google están desactualizados y ya no funcionan. Este parece ser el lugar perfecto para mantener una guía práctica actualizada.
Sería útil si alguien pudiera confirmar la solución de trabajo descargando Magento 1.8.0.0 y proporcionando una prueba de su eliminación, estos fragmentos de código a veces son útiles, pero todavía tenemos que encontrar una solución de trabajo de una manera fácil de leer / documentada.
Respuestas:
Antes de
1.8.1
que no conozca ninguna forma de hacer que esto funcione, debe anular la clase principal abstracta en el grupo de códigos local o reescribir cada clase secundaria (fea, lo sé).A partir
1.8.1
de entonces, presentaron el eventocustomer_address_validation_after
. Me deshice de la validación usando reflexion, incluso si no estoy demasiado orgulloso de ello. Podría no resolver su problema, pero pensé en publicarlo de todos modos.También escribí un script de actualización para definir el archivo como no requerido, y edité todos los formularios para eliminar la validación de la interfaz. Como dije, puede que no sea la mejor solución, pero es mejor que reescribir 3-4 clases en mi humilde opinión.
ACTUALIZACIÓN El equipo central envuelto el evento
customer_address_validation_after
en una partida condicional1.9.0
a través de1.9.1.1
(me pregunto por qué, no tiene sentido para mí ...) así que mi solución no funcionará para estas versiones, por desgracia. El condicional fue eliminado por suerte1.9.2
.fuente
Deberá modificar la
Mage_Customer_Model_Address_Abstract
clase * en la línea 375-377 comentando la validación Zend del número de teléfono.así como el atributo telefónico en sí mismo en la base de datos eliminando la clase requerida. Esto se puede hacer con la siguiente consulta
Esto se encargará de la validación frontend (Javascript) de los campos telefónicos.
** Asegúrese de copiar el archivo de clase en su
local
directorio de código *fuente
eav_attribute
con el código 'teléfono', por lo que no puede saber cuál se ha actualizado. Entonces el código debería funcionar (lo acabo de probar). Para la parte visual, aún debe eliminar<em>*</em>
en la etiqueta del campo en todos los formularios (pago / edición de dirección). Por supuesto, si tiene algún tipo de pago de un paso instalado, podría anular algunas de las funciones predeterminadas de Magento y esta respuesta puede no funcionar.Sugeriría cambiar la plantilla de dirección para el tema del sitio y hacer que el teléfono sea un campo oculto con un valor predeterminado como un espacio o guión. Esto no requerirá reescrituras / sobrescrituras.
fuente
¿No podría simplemente reescribir las clases que usan el resumen utilizando una extensión personalizada y reescrituras de configuración?
Mage_Sales_Model_Quote_Address
,Mage_Customer_Model_Address
,Mage_Sales_Model_Order_Address
,Luego puede hacer su propia
validate
función que excluirá la verificación telefónica, o mejor aún, verifica todos los atributos requeridos y valida que estén configurados.fuente
Acabo de encontrar una pequeña extensión "Webguys_Telefonkeinpflicht" de Tobi, que básicamente sigue el enfoque de David. Reescribe las subclases respectivas. Lo que más me gusta es el hecho de que solo distribuye un evento en las clases reescritas y toda la personalización posterior se realiza en un observador de eventos. También observa el
core_block_abstract_to_html_after
evento para eliminar la estrella y la clase requerida del campo de entrada con algo de magia negra regex. Y, por supuesto, viene con un script de configuración, lo que hace que el atributo del teléfono no sea requerido en laeav_attribute
tabla. Puede verificar la extensión en GitHub .fuente