web-dev-qa-db-fra.com

Existe-t-il un événement pour enregistrer un élément de menu?

J'essaie de créer un plug-in qui se déclenche lorsqu'un élément de menu est enregistré, mais je ne parviens pas à trouver un événement à écouter. Sor loin j'ai

         function onContentAfterSave()
         {
                var_dump('contentAfterSave');exit;
                /*
                 * Plugin code goes here.
                 * You can access database and application objects and parameters via $this->db,
                 * $this->app and $this->params respectively
                 */
                return true;
        }
        function onSave()
        {
                var_dump('OnSave');exit;
                /*
                 * plugin code goes here.
                 * you can access database and application objects and parameters via $this->db,
                 * $this->app and $this->params respectively
                 */
                return true;
        }
        function onExtensionAfterSave()
        {
                var_dump('OnExtensionSave');exit;
                /*
                 * plugin code goes here.
                 * you can access database and application objects and parameters via $this->db,
                 * $this->app and $this->params respectively
                 */
                return true;
        }

Mais pas de ceux qui tirent. Y a-t-il un événement différent que je devrais écouter?

2
ContextSwitch

onContentAfterSave() est le bon.

Il apparaît dans com_menus, dans la fonction de sauvegarde du modèle d'élément de menu: (administrateur\composants\com_menus\modèles\menu.php - ligne 240)

// Trigger the after save event.
$dispatcher->trigger('onContentAfterSave', array($this->_context, &$table, $isNew));

J'ai lancé un test hello world en ajoutant un die("hello world") au onContentAfterSave de plugins\system\fields\fields.php, ce qui est déclenché lors de l'enregistrement d'un élément de menu.

Je vous suggère de comparer votre plugin à celui-là pour voir si vous avez oublié quelque chose.

(NB: le plugin system\fields semble être nouveau dans Joomla 3.7, donc il peut ne pas exister si vous utilisez une version plus ancienne)

3
Richard B