2011-01-25 6 views
0

J'ai cherché sur Internet pour trouver une réponse à ma question, mais je n'arrive pas à en trouver une, même si c'est probablement assez simple.Le formulaire de soumission du module Joomla ne peut pas accéder à la base de données

J'ai un module joomla qui inscrit les utilisateurs à un bulletin, en cliquant sur le bouton soumettre je navigue vers le fichier submitsignup.php. Je le fais en utilisant la valeur de l'action sous forme comme ceci:

form action="modules/mod_cmsnewslettersignup/otherfiles/submitsignup.php" method="post" id="subForm" 

Dans ce fichier submitsignup.php Je ne peux pas accéder à toutes les classes de joomla, tels que:

$db = JFactory::getDBO(); 

Je sais que je ne peux pas l'accès toutes les classes joomla parce que j'ai fait un accès direct au fichier submitsignup.php, mais je me demandais comment accéder à ce fichier pour pouvoir accéder à toutes les classes Joomla?
Merci.

+0

Ce n'est pas une bonne pratique de le faire. Vous devez soumettre le formulaire sur l'url dummy et créer un plugin qui fonctionnera sur cette url fictive. – Gaurav

Répondre

0

Si vous rechargez la page lorsque vous soumettez le formulaire, il existe une solution simple qui résout le problème de l'utilisation d'une URL directe et du chargement de l'infrastructure Joomla dans ce fichier. Fondamentalement, changez votre code de module à quelque chose comme ceci -

if ($_POST["formsubmitted"]){ 
    the code you run when the form is submitted 
    echo success or failure message 
} else { 
the code you run to display the form 
    <form action="<?php echo JURI::current(); ?>" method="post"> 
    <input type="hidden" value="true" name="formsubmitted"> 
} 

Fondamentalement, vous soumettez le formulaire à la page qui l'affiche. Ensuite, dans votre module, vous ajoutez un crochet pour traiter le formulaire soumis ou afficher le formulaire en fonction de ce que vous trouvez dans $ _POST. Vous pouvez ajouter une sécurité simple pour vous assurer que le formulaire est envoyé à partir de votre site.

+0

Merci, c'est réglé le problème. Appréciez-le. – Nathan

Questions connexes