Petit point vocabulaire avant de commencer : quand j’utilise les mots réécrire ou réécriture, je parle d’utiliser config.xml pour modifier le comportement d’un bloc
Récemment, je devais modifier le nom dans le tableau récapitulatif des articles d’une commande. La tâche consistait à rajouter une option que j’avais passé grâce à info_buyrequest pour des questions de commodité. J’ai donc cherché la fonction qui s’en charge dans les blocs et elle se trouve dans
Mage_Adminhtml_Block_Sales_Items_Column_Default.
Je me lance donc dans la réécriture de ce bloc mais après maints vidages de cache, force est de constater que cela ne fonctionne pas. Je vérifie que la fonction appelée est bien correcte et il s’agit en effet de getOrderOptions. Si je modifie directement la fonction sans la réécrire, j’ai le comportement souhaité mais la réécrire ne fonctionne pas.
Je m’aperçois vite que le bloc surchargé avec la réécriture ne remplace pas l’extension originale du bloc utilisé qui est en fait Mage_Adminhtml_Block_Sales_Items_Column_Name. Une fois la réécriture faite sur ce bloc, on obtient enfin le résultat désiré.
L’idée est donc de réécrire la fonction dans le bloc qui est appelé car la réécriture se fait trop tard pour que les extensions du modèle de base soient prises en compte. S’il est vraiment nécessaire de modifier le bloc parent, il est toujours possible d’utiliser le pool local pour surcharger le bloc en question grâce à la préséance des pools.
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.