J'ai suivi ce tutoriel pour créer un formulaire de connexion AJAX: http://www.mysite4u.net/joomla-articles/jquery-ajax-joomla-login.html
Mais je ne peux pas le faire fonctionner. L'appel ajax ne fonctionne pas. Cela me donne cette erreur:
Uncaught TypeError: impossible de lire la propriété 'connectée' de null
J'ai essayé de lire cette documentation, mais j'imagine que ce n'est pas le composant AJAX qui est utilisé dans celui-ci, et il ne mentionne rien sur l'appel de composants: https: // docs.joomla.org/Using_Joomla_Ajax_Interface
Ceci est mon appel AJAX:
form = jQuery('#userForm');
jQuery.ajax({
url: 'index.php?option=com_content&format=ajax&view=article&task=loginUser&tmpl=component',
type: 'post',
dataType: 'html',
data: {
form: jQuery(form).serializeArray()
},
async: true,
success: function(response){
console.log(response);
var result = jQuery.parseJSON(response);
if ( result.loggedIn == 1 ) {
//User logged in
}
else {
//User not logged in
}
}
});
Et la fonction à l'intérieur components/com_content/views/article/view.ajax.php
_ ("view.ajax.php" est un fichier que j'ai créé):
public function _logInUser( $form ){
$options = array();
$credentials = array();
$credentials['username'] = $form[0]['value'];
$credentials['password'] = $form[1]['value'];
$result = JFactory::getApplication()->login($credentials, $options);
$result = ($result) ? 1 : 0;
//1 - logged in
//0 - not logged in
echo json_encode( array('loggedIn' => $result) );
jexit();
}
Apparemment, il me manquait une partie importante. J'avais besoin que "l'utilisateur de connexion" task
soit ajouté au commutateur dans view.ajax.php
Comme:
function display($tpl = null)
{
$task = JRequest::getString('task');
switch( $task ){
case "registerNewUser":
$this->_registerNewUser( JFactory::getApplication()->input->post->get('form', NULL, 'ARRAY') );
break;
case "loginUser":
$this->_logInUser( JFactory::getApplication()->input->post->get('form', NULL, 'ARRAY') );
break;
}
jexit();
}
Je vous ai peut-être mal compris dans votre question mais dans le répertoire com_content/views/article, vous ne pouvez pas/ne devriez pas créer de fichier view.html.php , car a à l'origine un bon fichier view.html.php.
Dans le tutoriel que vous suivez, l’auteur dit que vous devez créer un fichier 'view.ajax.php' dans le dossier com_content/views/article view.html.php). Peut-être que cela cause votre problème puisque vous avez créé un fichier incorrect pour cet appel ajax.
Et s’il s’agit là d’une erreur dans votre question, vous voudrez peut-être aussi étudier cette réponse précédente concernant les appels en ajax dans Joomla (il est préférable de ne pas le répéter ici): Quelle est la bonne façon de créer AJAX appel dans le composant?