Archives pour 'ajax'

Symfony : comment gérer l’apparition du panneau de connexion dans les zones rafraichies en Ajax

27 mai 2008

Symfony permet assez facilement de mettre en œuvre des appels Ajax afin de dynamiser vos écrans. Symfony permet également de facilement sécuriser tout ou partie de vos applications via de simples paramétrages. Si l’utilisateur connecté n’a pas le degré suffisant d’autorisation ou si sa session a expirée, il sera automatiquement dirigé, par le filtre de sécurité de Symfony, vers, par exemple, le panneau de login de votre application.

Un effet de bord de ces techniques est que, si l’utilisateur de votre application laisse sa session expirer, puis lance une action Ajax devant rafraichir une partie de son écran, il verra le panneau de connexion apparaitre dans cette zone : effet peu ergonomique garanti !

Voila la technique que j’utilise pour pallier à ce problème. A vrai dire, je ne sais pas si elle correspond à l’état de l’art, mais elle a l’avantage de bien fonctionner sans nécessiter de multiples interventions dans l’application.

1/ Permettre l’évaluation du Javascript dans les templates affichés via des appels AJax

Cela dépend de la librairie Javascript que vous utilisez. Par exemple, avec JQuery, il faudra préciser que le type de donnée retourné est ‘html’. Si vous utilisez les helpers Symfony, il vous faudra ajouter 'script' => true au tableau d’options passé au helper.

Cette étape n’est pas obligatoire. Elle permet toutefois de rediriger les utilisateurs en Javascript vers le panneau de connexion.


2/ Modifier le code du contrôleur gérant votre panneau de connexion

On va simplement lui dire que, si il est appelé via une requête Ajax, il n’utilise pas la vue habituelle.

Par exemple :

  /**
   * Executes login action
   *
   */
  public function executeLogin()
  {
    if($this->getRequest()->isXmlHttpRequest()) {
      $this->getResponse()->setStatusCode(401);
      return 'redirect';
    }
    /*
    end of the login action code
   */
  }

3/ Créer la vue appelée précédemment

Ici le fichier loginRedirect.php

<?php
use_helper('Url');
echo javascript_tag ('
location.href=\'.url_for('@user_logout').'\';
');
?>

La route correspondant à l’action de déconnexion @user_logout doit bien sur exister.

Voilà !

Et vous, que pensez vous de cette méthode ?

Etude comparative des principaux frameworks ajax

14 novembre 2006

Un livre blanc écrit par un de mes collègues lyonnais.

A télécharger sur le site de Clever Age.

Le Jajax

27 mai 2006

Je lis ici : « Pourtant, les nouveaux outils en PHP ou Ajax … » – GASP

J’ai, un jour, fait une avant vente ou un prospect se demandait s’il gardait la techno Java pour ses sites ou si il passait à Ajax. J’aurais du lui vendre une migration en Jajax ! :-) J’ai répondu, et il m’a regardé avec des yeux ronds, qu’on pouvait faire un site « Ajax » avec n’importe qu’elle techno voire avec du HTML statique (et oui donc, il pouvait garder Java) ! Il y a un bon créneau pour l’évangélisation !!!!!!

Ce qui est dingue avec les décideurs et les buzz words c’est le grand fossé d’incompréhension entre les deux. Servis par une presse spécialisée un peu feignante et habituée des raccourcis faciles, ils ne sont pas aidés. Et encore, je fais généralement dans le simple (Ajax, web 2.0 …), imaginer le calvaire avec SOA (gros gros buzz word celui là) !