Question

Je veux fournir une validation côté serveur supplémentaire des formes d'adresse dans Magento, à la fois dans Commander et le Client. Je peux passer outre Mage_Checkout_OnepageController, Mage_Checkout_MultishippingController et Mage_Customer_AddressController, mais qui semble un peu beaucoup, et je dois inclure explicitement le chemin du contrôleur, ce qui semble sale.

Si je compte sur le système d'événements et de faire ma validation après l'action du contrôleur approprié je pourrais avoir à activement undo les choses par le contrôleur, comme supprimer les messages de session ou supprimer ou adresses de changement dans le session. (Je voudrais aussi compterai sur le système d'événements étant synchrone, qui, tout semble vrai sale, et je compterai sur l'ordre des événements si d'autres événements affectent ce que je travaille.)

Je suppose que le meilleur pari serait bafouée Mage_Eav_Model_Form->validateData(). Le seul problème avec que, contrairement à certaines des options ci-dessus, il me donne seulement la possibilité de définir des messages d'erreur, et parfois vous voulez modifier les données JSON réelles remontant (par exemple, pour donner à l'utilisateur la possibilité de choisir parmi les alternatives).

Quand je fait des recherches sur la façon de le faire Google relevai résultats sur le remplacement de validation côté client, mais il ne semble pas être beaucoup sur côté serveur. Y at-il un générique bonne façon pour faire des substitutions de validation de formulaire côté serveur?

Mise à jour : J'ai aussi découvert il y a un registre de rappel pour Varien_Object->save(), mais il arrive seulement après la sauvegarde. S'il y avait un rappel qui se passe avant la sauvegarde, il servirait, mais je ne vois pas quelque chose comme ça.

Était-ce utile?

La solution

Une façon sera de brancher en contrôleurs des événements pré d'expédition et validons là-bas, si vous trouvez quelque chose qui est tout à fait tort, l'action ensemble pour être expédié et redirect retour à la page de formulaire. Il est encore sale façon de faire les choses, mais quand la logique de validation se produit dans le contrôleur, vous ne disposez que peu d'options.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top