Après pas mal de temps à m’être cassé la tête, voici un tuto qui peut s’avérer utile et qui ne surcharge pas le core Magento.

J’ai du créer une méthode de livraison custom – jusque là tout va bien – sauf que cette méthode de livraison nécessite d’avoir sélectionné un point relai pour qu’elle soit valide. Donc passer par une étape de validation durant mon checkout.

Après pas mal de recherches et d’aide du confrère Nicolas Verhoye, voici la méthode à adopter :

Dans votre config.xml, ajoutez l’observer suivant :

<?xml version="1.0"?>
<config>
    <!-- ... -->
	<global>
        <!-- ... -->
        <events>
			<!-- ... -->
            <controller_action_postdispatch_checkout_onepage_saveShippingMethod>
                <observers>
                    <monmodule_shipping_method_observer_address>
                        <class>Mypackage_Mymodule_Model_Checkout_ShippingMethod_Observer</class>
                        <method>myMethod</method>
                    </monmodule_shipping_method_observer_address>
                </observers>
            </controller_action_postdispatch_checkout_onepage_saveShippingMethod>
			<!-- ... -->
        </events>
        <!-- ... -->
	</global>
	<!-- ... -->
</config>

Dans la méthode de votre observer (/app/code/local/Mypackage/Mymodule/Model/Checkout/ShippingMethod/Observer.php) :

<?php

class Mypackage_Mymodule_Model_Checkout_ShippingMethod_Observer
{
	public function myMethod($observer)
    {
		/* votre logique */
		if($error){
			$message = Mage::helper('mymodule')->__('Your error message');
			$result = array('error' => 1, 'message' => $message);
			$controllerAction = $observer->getEvent()->getControllerAction();
			$controllerAction->getResponse()->setBody(Zend_Json::encode($result));
		}
		
		return $this
    }
}

Ce qui aura pour effet, en cas d’erreur, de ne pas accéder à l’étape suivante du checkout, et d’avoir un alert javascript avec votre message d’erreur.

Ajouter une validation à votre méthode de livraison custom
Taggé sur :                    

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous utilisons des cookies afin de nous assurer de vous proposer la meilleure expérience sur ce site.
Ok