Je lis beaucoup de documentation sur la création de modules personnalisés pour Magento.Où est-ce que je me trompe en utilisant le modèle d'observateur de Magento?
Pour mon essayer poing, j'ai créé la structure du module en utilisant Module Creator, et voici le code i ajouté dans /app/code/local/Test/MyModule/etc/config.xml
:
<?xml version="1.0"?>
<config>
<modules>
<Test_MyModule>
<version>0.1.0</version>
</Test_MyModule>
</modules>
<!-- frontend, admin, adminhtml -->
<global>
<!-- models, resources, blocks, helpers -->
<events>
<sales_order_place_before> <!-- event i need to catch -->
<observers>
<trigger_mymodule_placeorder>
<type>model</type>
<class>test/mymodule/model_observer</class>
<method>sendOrder</method>
</trigger_mymodule_placeorder>
</observers>
</sales_order_place_before>
</events>
</global>
</config>
Mon fichier /app/etc/modules/Test_MyModule.xml
:
<?xml version="1.0"?>
<config>
<modules>
<Test_MyModule>
<active>true</active>
<codePool>local</codePool>
</Test_MyModule>
</modules>
</config>
Et voici mon /app/code/local/Test/MyModule/Model/Observer.php
:
<?php
class Test_MyModule_Model_Observer
{
public function sendOrder()
{
// do something.
}
}
. mais la fonction Test_MyModule_Model_Observer :: sendOrder() n'est jamais déclenchée (j'ai essayé d'y mettre un enregistreur de base de données factice pour voir si/quand la fonction est exécutée). Je sais que le module lui-même est chargé correctement, dans le fichier config.xml du module, il déclare un nouveau lien dans le menu principal et le lien s'affiche correctement (après avoir vidé le cache de magento), donc je suppose que le problème est la fonction convention de nommage que je manque quelque part .. mais où?
De plus je suggère la fonction publique SendOrder() à accepter $ argument observateur, il serait fonction publique SendOrder ($ observateur) –
pas strictement nécessaire , mais vous avez raison, cela ajouterait certainement plus de clarté. –
a travaillé comme un charme! @JevgeniSmirnov oui vous avez raison, dans la vraie fonction je vais prendre l'argument observateur pour faire ce que la fonction doit faire; la fonction que j'ai posté était juste un exemple;) – Strae