Pregunta

Quiero proporcionar validación en el servidor adicional de las formas de dirección en Magento, tanto en el resumen y el Cliente. Puedo anular Mage_Checkout_OnepageController, Mage_Checkout_MultishippingController y Mage_Customer_AddressController, pero que parece un poco mucho, y que tendría que incluir explícitamente la ruta de controlador, que parece sucio.

Si me baso en el sistema de eventos y hacer mi validación después de la acción del controlador adecuado que podría tener que activa Deshacer las cosas hechas por el controlador, tales como mensajes de la sesión quitar o eliminar o direcciones de cambio en el sesión. (También me confiará en el sistema de eventos de ser sincrónica, que aunque es cierto parece sucia, y que estaría confiando en el orden de los acontecimientos si otros eventos afectan lo que estoy trabajando.)

supongo que la mejor opción sería Mage_Eav_Model_Form->validateData() anulación. El único problema con que a diferencia de algunas de las opciones anteriores sólo me da la oportunidad de mensajes de error de ajuste, ya veces se desea modificar los datos JSON reales vuelta van (por ejemplo, para dar al usuario la posibilidad de elegir entre varias alternativas).

Cuando investigué cómo hacer esto Google se presentó resultados sobre anulando la validación del lado del cliente, pero no parece ser mucho sobre el lado del servidor. ¿Hay un de forma genérica la derecha para hacer del lado del servidor anulaciones de validación de formularios?

Actualizar : También descubrí que hay un registro de devolución de llamada para Varien_Object->save(), pero sólo sucede después de la operación de guardar. Si hubiera una devolución de llamada que ocurre antes de que el ahorro que serviría, pero no vi nada de eso.

¿Fue útil?

Solución

Una forma será a enganchar en los controladores de eventos de despacho pre y validar allí, si encuentra algo que es absolutamente equivocado, acción conjunto para ser enviado y de vuelta a la página de redirección formulario. Todavía es sucia manera de hacer las cosas, pero cuando la lógica de validación sucede en el controlador, que sólo tienen pocas opciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top