J'utilise com_ajax pour les demandes et j'ai rencontré un problème.
J'essaie de déterminer si l'utilisateur qui fait une demande AJAX est connecté. Lorsque j'appelle JFactory :: getUser (), il renvoie un utilisateur invité, ID = 0. De même, JApplication-> isAdmin () renvoie false. J'imagine que c'est parce que com_ajax réside dans le site, pas dans le site de l'administrateur.
Est-il possible d'utiliser com_ajax et de distinguer si une personne est authentifiée? Sinon, y a-t-il un équivalent à com_ajax du côté de l’administrateur? Dois-je écrire mon propre Ajax sur un composant administratif?
En supposant que vous utilisiez les conventions de dénomination correctes pour votre tâche Ajax dans l'URL et la fonction PHP, vous devriez avoir quelque chose comme ceci:
helper.php
public static function myFunctionAjax()
{
}
fichier Javascript
var request = {
'option' : 'com_ajax',
'module' : 'mymodule',
'method' : 'myFunction',
'format' : 'raw'
};
$.ajax({
type: 'POST',
data: request,
success: function(response) {
// etc
}
});
myFunction
doit utiliser le même nom que la fonction PHP que vous souhaitez exécuter (myFunctionAjax()
).).
Le seul être différent est que PHP la fonction nécessite Ajax
à la fin.
Ensuite, dans votre fonction PHP, vous pouvez vérifier si l'utilisateur est connecté, comme suit:
public static function myFunctionAjax()
{
$user = JFactory::getUser();
if (!$user->guest)
{
// perform some magic
}
else
{
// Sorry, you must be logged in
}
}