2010-03-04 9 views
1

Je crée un module où, dans mon fichier PHP principal, j'ai ajouté une référence à un fichier Javascript. Dans ce fichier Javascript, je fais un appel jQuery sur dom ready qui fait un post Ajax pour récupérer le contenu initial d'un div. L'URL vers laquelle il écrit est un autre fichier PHP (gateway.php) qui fait partie de mon module. (Cette passerelle fait un appel à un serveur distant pour obtenir le contenu.)Comment utiliser jQuery ajax dans le module Joomla

Eh bien, l'accès direct est généralement interdit pour les fichiers de module. Je peux commenter la ligne de code qui interdit l'accès direct. Même en faisant cela, pour une raison quelconque, il semble que mon gateway.php n'a pas un accès complet à tout dans Joomla. Par exemple, gateway.php a un require de mon fichier helper.php. Je fais juste

require_once(dirname(__FILE__) . DS . 'helper.php'); 

qui pour autant que je peux dire est la manière standard d'inclure un fichier. Cependant, j'obtiens des erreurs montrant que DS n'est pas traduit comme la valeur définie dans Joomla. Son traitement DS comme une valeur de chaîne.

Si je change à

require_once(dirname(__FILE__) . '/helper.php'); 

puis-je obtenir l'erreur interdite d'accès direct.

Une idée de ce qui se passe ici ou la bonne façon d'utiliser Ajax dans un module Joomla dans un fichier autre que le fichier principal du module PHP?

Répondre

1

Sauf s'il y a une raison particulière pour laquelle vous devez absolument faire autrement, vous devriez toujours passer vos appels via le fichier index.php de Joomla. N'essayez pas d'appeler des fichiers PHP individuels, à moins qu'ils ne soient 100% indépendants de Joomla. Les appels à defined('_JEXEC') or die('Restricted access'); en haut de chaque fichier .php dans Joomla pour une raison: vous voulez réduire le nombre de points d'entrée dans Joomla.

Pour faire des appels AJAX/JSON qui récupèrent des données depuis Joomla, vous devez créer un petit composant pour accompagner votre module. J'ai écrit un billet sur ce blog il y a quelques mois: http://www.designvsdevelop.com/the-way-not-to-do-javascript-in-joomla