it-swarm.com.de

Ajax mehrere Modulinstanzen

Ich habe ein benutzerdefiniertes Modul (Test) erstellt, das zwei Schaltflächen enthält - eine Vorwärts- und eine Rückwärtsschaltfläche. Wenn Sie darauf klicken, wird das Joomla Ajax-Interface verwendet, um die Funktion getAjax () von helper.php aufzurufen. Dies funktioniert einwandfrei und ich erhalte die erwartete Antwort. Die Probleme treten auf, wenn ich mehrere Instanzen desselben Moduls habe.

Ich habe zwei Probleme:

  1. Das Modul verfügt über einen Parameter, in dem Sie die Kategorien auswählen, von denen die Ergebnisse zurückgegeben werden sollen. Ich kann nicht herausfinden, wie dieser Parameter in getAjax () verwendet wird, wenn es mehr als eines dieser Module gibt. In der mod_test.php verwende ich einfach $params->get('cat_ids'). Dies ist im Helfer (wenn es mehr als eine Instanz des Moduls gibt) einfach nicht möglich, da JModuleHelper::getModule gibt das erste gefundene Modul zurück. Jede Instanz des Moduls hat unterschiedliche Parameter, daher ist es wichtig, dass Sie diese abrufen können.

  2. Dieses Problem ist ähnlich. Wie stelle ich eine Ajax-Anfrage an eine bestimmte Instanz eines Moduls mit Joomla Ajax Interface? Im Moment benutze ich ?option=com_ajax&module=test&format=raw.

1
giano574

com_ajax Muss die korrekte Instanz des Moduls kennen, da nur helper.php (Zum Aufrufen von getAjax()) gefunden werden muss, was offensichtlich für beide Instanzen gleich ist. Das deckt also Ihre zweite Frage ab.

Ändern Sie Ihre Ajax-URL in

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

und Sie können es in Ihrer getAjax() -Funktion abrufen, um die richtigen Instanzparameter zu erhalten.

$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