Bonjour,
J'ai réussi à configurer non sans problèmes mon architecture Zend à la main et tout fonctionne à peu près bien, donc j'ai essayé d'ajouter le composant permettant l'authentification.
Des problèmes s'en sont suivis, mon formulaire s'affiche correctement cependant lorsque j'entre le login et mdp une erreur dut apparemment à la configuration de db.adapter.
Comme des codes sont souvent plus explicites que de longues phrase :
Ici je récupère les infomations du registre dans AuthController.php :
Et plus précisément
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 <?php class AuthController extends Zend_Controller_Action { function init() { $this->initView(); $this->view->baseUrl = $this->_request->getBaseUrl(); } function indexAction() { $this->_redirect('/'); } function loginAction(){ $this->view->message = ''; if ($this->_request->isPost()) { // collect the data from the user Zend_Loader::loadClass('Zend_Filter_StripTags'); $f = new Zend_Filter_StripTags(); $username = $f->filter($this->_request->getPost('username')); $password = $f->filter($this->_request->getPost('password')); if (empty($username)) { $this->view->message = 'Please provide a username.'; } else { // setup Zend_Auth adapter for a database table Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable'); $dbAdapter = Zend_Registry::get('dbAdapter'); $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); $authAdapter->setTableName('users'); $authAdapter->setIdentityColumn('username'); $authAdapter->setCredentialColumn('password'); // Set the input credential values to authenticate against $authAdapter->setIdentity($username); $authAdapter->setCredential($password); // do the authentication $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($authAdapter); if ($result->isValid()) { // success: store database row to auth's storage // system. (Not the password though!) $data = $authAdapter->getResultRowObject(null, 'password'); $auth->getStorage()->write($data); $this->_redirect('/'); } else { // failure: clear database row from session $this->view->message = 'Login failed.'; } } } $this->view->title = "Authentification"; $this->render(); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dbAdapter = Zend_Registry::get('dbAdapter');
Cette erreur est, je pense dut au fait qu'il n'arrive pas à récupérer les informations de 'dbAdapter'
Pourtant sur mon point d'amorçage je lui précise ces informations (du moins je pense)
code de index.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // Chargement de la configuration $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', 'production'); $registry = Zend_Registry::getInstance(); $registry->set('dbAdapter', $config); // Mise en place du contrôleur $frontController = Zend_Controller_Front::getInstance(); Zend_Registry::set('dbAdapter', $config);
A tout hasard je vous met également mon fichier de configuration application.ini :
Merci d'avoir pris le temps de lire ce post
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 [production] phpSettings.date.timezone = "Europe/Paris" phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 db.adapter = PDO_MYSQL db.params.host = localhost db.params.username = nomutilisateur db.params.password = motdepasse db.params.dbname = nomBD includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" resources.frontController.params.displayExceptions = 1 resources.layout.layoutPath = APPLICATION_PATH "/layouts/" resources.view[] =![]()
Partager