Domanda

voglio fornire ulteriori validazione lato server delle forme di indirizzo in Magento, sia in Checkout e del Cliente. Posso ignorare Mage_Checkout_OnepageController, Mage_Checkout_MultishippingController e Mage_Customer_AddressController, ma che sembra un po 'troppo, e che avrei dovuto includere esplicitamente il percorso di controllo, che sembra sporca.

Se mi baso sul sistema di eventi e fare il mio convalida dopo l'azione controller appropriato avrei potuto attivamente Annulla le cose fatte dal controller, come ad esempio i messaggi di sessione rimuovere o cancellare o gli indirizzi di cambiamento nel sessione. (Mi piacerebbe anche essere basandosi sul sistema di eventi sia sincrono, che pur vero sembra sporca, e mi piacerebbe essere affidamento su l'ordine degli eventi, se altri eventi influenzano ciò su cui sto lavorando.)

Credo che la soluzione migliore sarebbe quella di sostituzione Mage_Eav_Model_Form->validateData(). L'unico problema con che a differenza di alcune delle opzioni di cui sopra mi dà solo l'opportunità di messaggi di errore set, e, a volte si desidera modificare i dati effettivi JSON risalenti (ad esempio, per dare all'utente la possibilità di scegliere tra le alternative).

Quando ho studiato come fare questo Google alzato risultati sull'override validazione lato client, ma non sembra essere molto su lato server. C'è una modo generico diritto di fare lato server override di validazione forma?

Aggiorna : Ho anche scoperto c'è un registro di callback per Varien_Object->save(), ma succede solo dopo il salvataggio. Se ci fosse un callback che avviene prima che il risparmio sarebbe servito, ma non ho visto niente di simile.

È stato utile?

Soluzione

Un modo sarà quello di collegare in controllori eventi spedizione pre e convalidare lì, se si trova qualcosa che è assolutamente sbagliato, l'azione impostata per essere spediti e ritorno reindirizzamento alla pagina del modulo. E 'ancora modo sporco di fare le cose, ma quando la logica di convalida avviene nel controllore, si hanno solo poche opzioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top