web-dev-qa-db-fra.com

Ajax plusieurs instances de module

J'ai créé un module personnalisé (test) comportant deux boutons: un bouton avant et un bouton arrière. Lorsque vous cliquez dessus, l'interface Joomla Ajax est utilisée pour appeler la fonction getAjax () de helper.php. Cela fonctionne très bien et j'obtiens la réponse attendue. Les problèmes apparaissent lorsque j'ai plusieurs instances du même module.

J'ai deux problèmes:

  1. Le module possède un paramètre dans lequel vous sélectionnez les catégories pour lesquelles vous souhaitez que les résultats soient renvoyés. Je ne peux pas comprendre comment utiliser ce paramètre dans getAjax (), quand il y a plus d'un de ces modules. Dans le mod_test.php, je viens d'utiliser $params->get('cat_ids'). Cela n’est tout simplement pas possible dans l’aide (quand il y a plus d’une instance du module) puisque JModuleHelper::getModule renvoie le premier module trouvé. Chaque instance du module aura différents paramètres, il est donc essentiel de pouvoir les obtenir.

  2. Ce problème est similaire. Comment faire une demande Ajax à une instance spécifique d'un module avec l'interface Ajax Joomla? En ce moment, j'utilise ?option=com_ajax&module=test&format=raw.

1
giano574

Le doseur com_ajax Doit connaître l'instance correcte du module, puisqu'il lui suffit de rechercher helper.php (Pour appeler getAjax()), ce qui est évidemment identique pour les deux instances. Donc, cela couvre votre deuxième question.

Changez votre URL ajax en

?option=com_ajax&module=test&format=raw&module_title=MODULE_TITLE_HERE

et vous pouvez le récupérer dans votre fonction getAjax() pour obtenir les paramètres d'instance corrects.

$jinput = JFactory::getApplication()->input;

// Get right instance by title
$module = JModuleHelper::getModule('mod_test', $jinput->getVar('module_title'));
$params = new JRegistry();
$params->loadString($module->params);
3
Rene Korss