web-dev-qa-db-fra.com

Appelle la fonction php en backend du module

J'essaie d'appeler une fonction php à partir du backend d'un module (j'utilise un champ de formulaire personnalisé). com_ajax Ne fonctionne pas car il extrait l'élément de menu actuel, qui n'existe pas car il n'est pas appelé depuis un menu.

J'ai essayé de lier directement à un fichier php mais cela ne fonctionnera pas car defined('_JEXEC') or die('Direct Access to this location is not allowed.'); est nécessaire pour des raisons de sécurité.

J'ai également essayé d'utiliser JURI::base() . 'index.php?option=mod_myMod&task=myPhpFunction'; pour mon URL de requête AJAX) tout en ayant le bloc de code ci-dessous défini avant ma classe d'aide dans le module helper.php, Mais 404 (Component not found.) erreur:

$taskInput = JFactory::getApplication()->input;
$task = $taskInput->get('task');

if ($task == "importData") {
    ModPropertySearchHelper::importDataAjax();
}

Je pourrais créer un composant séparé pour gérer cela. Cependant, cela me semble bizarre et c'est un problème que com_ajax A tenté de résoudre, je préférerais donc ne pas le faire.

Existe-t-il un moyen de remplacer ajax.php Pour pouvoir être appelé à partir du backend d'un module? Je ne voudrais pas le remplacer en cas de mises à jour et autres.

Ou existe-t-il une meilleure solution à mon problème?

2
Kibner

Pour des raisons de sécurité, plusieurs mesures dans Joomla empêchent l’accès direct aux scripts.

Vous devez donc suivre les bonnes pratiques Joomla pour tirer parti du système de gestion de contenu Joomla.

Pour exécuter au sein de Joomla, vous devez créer un composant, un module ou un plugin.

Si vous souhaitez implémenter une requête Ajax, vous devez créer un plugin pour com_ajax.

Utilisation de l'interface Joomla Ajax

Un composant fin et extensible servant de point d'entrée pour les demandes HTTP de modules et de plug-ins autonomes, permettant ainsi de bénéficier du potentiel de la fonctionnalité Ajax. Com_ajax est généralement utilisé lorsque vous n'êtes pas le développeur du composant avec lequel le module ou le plug-in interagit.

https://docs.joomla.org/Using_Joomla_Ajax_Interface

1
Anibal

Il semble que ce module vous permette de coller en php, mais je ne l’ai pas essayé moi-même.

Mais comme dit Anibal. Si vous allez utiliser Ajax et devez interagir avec Joomla, vous devez utiliser com_ajax et le développer vous-même.

http://extensions.joomla.org/extension/blank-module

0
Søren Beck Jensen