Bonjour à tous,
Ayant besoin d'un formulaire de login pour la partie Admin du site web que je développe, je jette un oeil sur l'atelier Zend_Form de Julien P.
Ayant simplement besoin de ça et ne souhaitant pas réinventer la roue, je copie/colle, et réadapte bien sur le tout à mon cas.
Oui mais... ça ne fonctionne pas (evidemment). Pour être plus précis, les méthodes nécessitant Zend_auth ne fonctionnent pas. C'est-à-dire que si je rentre login et pas de password, ou login et password trop court, ou pas de login avec password, ou ni login ni password, j'ai bien les messages d'erreurs correspondants. Mais dès que je rentre login avec password (qu'ils soient valident ou non d'ailleurs) ça me renvoie sur ma belle page d'erreur 500.
J'en conclus donc que je dois avoir un oubli (ou une erreur) quelque part à propos de Zend_Auth... mais je ne vois pas quoi ! J'ai eu beau regarder le tuto débutant sur Zend_Auth, je dois y être imperméable....
Voila comment j'ai procédé :
Bootstrap
Mon contrôleur (AdminController)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 //On charge les classes à utiliser ; //A noter que je suis en autoload. //J'ai ajouté cette ligne par la suite pour tester... Zend_Loader::loadClass('Zend_Auth'); //Le necessaire pour la base de données $configPath = 'mon/chemin/de/config/config.ini'; // Création d'un objet à partir du fichier ini $config = new Zend_Config_Ini ( $configPath, 'dev' ); // Construction d'un objet $db permettant d'utiliser la base de données $db = Zend_Db::factory ( $config->database ); $db->getConnection (); Zend_Registry::set ('db',$db); Zend_Db_Table::setDefaultAdapter ( $db );
Mon formulaire (LoginForm) est le même que celui du tuto, adapté à mon cas, c'est-à-dire avec juste les quelques noms à modifier et les quelques messages d'erreurs réécris.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php class AdminController extends Zend_Controller_Action { function indexAction() { $this->view->translate = Zend_Registry::get('translate'); $this->view->title = "Login"; $this->view->content = "admin/index.phtml"; $this->view->classpage = "admin"; //Je récupère bien mon db crée dans le bootstrap... $db = Zend_Registry::get('db'); //Puis je l'envoie à LoginForm de même que mes info de table $f = new forms_LoginForm(array('dbAdapter'=>$db, 'tableName'=>'members', 'loginColumn'=>'login', 'passwordColumn'=>'pass', )); $this->view->form = $f; } } ?>
Idem pour mon "vérifieur" (LoginValidator), juste quelques noms et messages de modifiés.
Et enfin ma View (index.phtml, le fichier appelé par mon contrôleur)
Voila, vous savez tout... je pense donc comme je l'ai déjà dit que je dois m'orienter vers Zend_Auth, mais je vois pas quoi faire ni comment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <h1>CONNEXION</h1> <div class="contenu"> <?php /*A noter que la partie qui suit est commentée car si je la laisse j'arrive directement sur une erreur 500, du fait je pense à hasValidIdentityYet(). En l'enlevant, mon formulaire s'affiche bien et gère bien les erreurs tel que champs vide ou trop court. Dès que je remplis correctement mon formulaire, erreur 500, du fait je pense à getIdentity().*/ // Si $form est déja crée // if($this->form->hasValidIdentityYet()) { // les identifiants sont déja en session // $this->form = sprintf('Bienvenue %s', $form->getIdentity()); // } // else if ($_SERVER['REQUEST_METHOD'] == 'POST') { if ($this->form->isValid($_POST)) { $this->form = sprintf('Bienvenue %s', $this->form->getIdentity()); } else { $this->form->populate($_POST); } } ?> <p><?php echo $this->form; ?></p> </div>
Si vous avez des exemples/tutos/solutions, je prends
Merci d'avance







Répondre avec citation
Partager