Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjours, j'aimerais créer un formulaire de connexion comme il en existe sur tous les sites. Il doit donc aparaitre dans toute les pages. j'ai vus qu'il fallait définir Un controllerLogin, une form et un helpers. Hors ce que je ne comprend pas c'est comment appeler le controllerLogin puisqu'il doit etre appelé par toute les pages hors chaques page a déjà son controller. En gros il faut que controllerLogin soit commun a tous? si on peut me donné des précision.
Hors ligne
tout simplement en précisant
<form action="<?php echo $this->baseUrl() ?>/login/index" .... > (en considérant que tu n'as pas de module)
edit : lorsque tu vas valider ton post, ta requete s'adressera a ton loginController
Dernière modification par nick (04-03-2010 19:55:40)
Hors ligne
tu peux faire un module login et intégrer la vue de ton action comprenant ton formulaire dans une autre vue avec $this->action();
Hors ligne
Prends bien en compte que tu peux appeller plusieurs actions par requêtes.
Moi je trouve plus pratique d'appeller soit une vue avec le formulaire soit une vue avec "Bonjour xxx" en fonction de Zend_Auth->hasIdentity() et avoir un controller de login séparé pour ne pas trop alourdir chaque requête.
Hors ligne
Désolé de remonter ce sujet, mais je suis tombé dessus avec google et on peut dire qu'il correspond pas mal à un problème que je me pose.
Je suis en train de faire un formulaire de connexion. Jusque la tout va bien, la où je coince, c'est le fait que je veux que toutes mes pages effectuent un test si l'utilisateur est connecté ou non, afin de savoir si je suis j'affiche le formulaire ou un cadre relatif aux informations de l'utilisateur.
J'ai donc envisagé de mettre tout ça dans le layout. Donc dans mon layout, je fais mes tests puis je créé ce qu'il faut. L'inconvénient c'est que je trouve cela assez sale.
Le layout selon moi est une vue, il n'y a donc pas lieu d'effectuer des tests dedans. Y'a-t-il donc moyen d'avoir un contrôleur par défaut fonctionnant sur toutes les pages?
Hors ligne
C'est sur que avoir un affichage avec juste un test sur Zend_Auth->hasIdentity() dans le layout c'est plus light.
Après pour avoir un controlleur commun au lien de TonController extends Zend_Controller_Action tu fais TonController extends TonDefaultController et TonDefaulltController extends Zend_Controller_Action où tu y défini tes traitements communs.
Ou tu passes par un plugin ce que je fais personnellement. Mais je reste avec un simple test et un affichage, je n'embarque pas tout le traitement que je préfère mettre dans un controller/action dédié
Hors ligne
Merci beaucoup de ta réponse. Je n'ai pas trop compris le principe avec le controller qui hérite d'un confroller default et donc si tu pouvais m'en parler un peu plus et me détailler quelque peu le mécanisme je t'en serai bien reconnaissant.
Sinon je me suis renseigné et oui apparemment le mieux est d'utiliser les plugins ou aide d'action, surtout les plugins lorsque cela affecte l'application dans son ensemble. Je vais donc utiliser le plugin.
J'aime bien cette communauté réactive. ZF n'est pas super simple à prendre en main, ça a l'air de demander pas mal de pratique et c'est vraiment agréable d'avoir des gens qui aident en répondant rapidement et efficacement.
Hors ligne
Faire ce que tu veux avec les plugins est la solution la mieux par expérience.
Concernant les controllers, ce dont je parle est en fait pour avoir un controlleur dont des traitements sont communs à l'application, ce qui peut etre fait par les plugins comme on vient de le dire.
Si vraiment tu veux en savoir plus, ce sujet à déjà du être abordé sur les forums
Hors ligne
D'accord. Merci beaucoup de ton aide, je vais regarder du côté des plugins et essayer d'en faire un.
Bonne continuation et à la prochaine.
Hors ligne
Bonsoir Issiel,
J'avais également le même souci. Je veux vérifier l'état de connexion avant d'accéder à n'importe quelle page.
Ce contrôle peut être éffectué facilement avec les Plugins (surtout ds la fonction PreDispatch()).
Voici ci-dessous un bout de code à mettre dans ton plugin :
public function preDispatch() { if (!Zend_Auth::getInstance ()->hasIdentity ()) { if ('index' != $this->getRequest()->getControllerName()) { $this->getRequest()->setControllerName('index') ->setActionName('index'); } } }
Slt,
Hors ligne