TeeJay
02.05.2008, 09:30
Moin ich bin gerade dabei mein Loginscript auf Zend_Form umzustellen. Ich würde ganz gerne die Error behandlung von Zend_Form benutzen, habe allerding Problme fehlermeldungen an Zend_form weiter zu reichen. Hier mal meine auth Action
public function authenticateAction()
{
if ($this->_request->isPost()) {
$formData = $this->_request->getPost();
$form = $this->_createForm();
if (!$form->isValid($formData)) {
$this->view->form = $form;
$this->_helper->viewRenderer->setScriptAction('index');
return;
}
$values = $form->getValues();
$dbAdapter = Zend_Registry::get('db');
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter->setTableName('user');
$authAdapter->setIdentityColumn('username');
$authAdapter->setCredentialColumn('password');
// Set the input credential values to authenticate against
$authAdapter->setIdentity($values['login']);
$authAdapter->setCredential($values['passwd']);
// do the authentication
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if ($result->isValid()) {
$data = $authAdapter->getResultRowObject(null,'password');
$auth->getStorage()->write($data);
$controllername = $values['controllername'];
$lang = $values['language'];
$actionname = $values['actionname'];
if($controllername == 'login'){
$controllername = $this->_config->site->default_controller;
}
$this->_redirect('/'.$lang.'/'.$controllername.'/'.$actionname.'/');
}else{
// hier muss was passieren
Zend_Debug::dump($result->getMessages());
}
}
$this->_helper->viewRenderer->setScriptAction('index');
return;
Das Problem liegt darin das wenn das authen fehl schlägt bekommt man mit getMessages ein array mit Fehlermeldungen. Diese Fehlermeldungen möchte ich nun den Form Elementen mitgeben, d.h. form nochmal rendern. Hab mir schon überlegt nen eigenen validator zu schreiben, aber da müsste ich ja einen Datenbankcall machen um an die messages zu kommen, die ohnehin schon beim Authen ausgeworfen werden. Habe immo keinen Plan, wie man das machen kann. Vielleicht weiss es ja jemand von euch.
Gruß Teejay
public function authenticateAction()
{
if ($this->_request->isPost()) {
$formData = $this->_request->getPost();
$form = $this->_createForm();
if (!$form->isValid($formData)) {
$this->view->form = $form;
$this->_helper->viewRenderer->setScriptAction('index');
return;
}
$values = $form->getValues();
$dbAdapter = Zend_Registry::get('db');
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter->setTableName('user');
$authAdapter->setIdentityColumn('username');
$authAdapter->setCredentialColumn('password');
// Set the input credential values to authenticate against
$authAdapter->setIdentity($values['login']);
$authAdapter->setCredential($values['passwd']);
// do the authentication
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if ($result->isValid()) {
$data = $authAdapter->getResultRowObject(null,'password');
$auth->getStorage()->write($data);
$controllername = $values['controllername'];
$lang = $values['language'];
$actionname = $values['actionname'];
if($controllername == 'login'){
$controllername = $this->_config->site->default_controller;
}
$this->_redirect('/'.$lang.'/'.$controllername.'/'.$actionname.'/');
}else{
// hier muss was passieren
Zend_Debug::dump($result->getMessages());
}
}
$this->_helper->viewRenderer->setScriptAction('index');
return;
Das Problem liegt darin das wenn das authen fehl schlägt bekommt man mit getMessages ein array mit Fehlermeldungen. Diese Fehlermeldungen möchte ich nun den Form Elementen mitgeben, d.h. form nochmal rendern. Hab mir schon überlegt nen eigenen validator zu schreiben, aber da müsste ich ja einen Datenbankcall machen um an die messages zu kommen, die ohnehin schon beim Authen ausgeworfen werden. Habe immo keinen Plan, wie man das machen kann. Vielleicht weiss es ja jemand von euch.
Gruß Teejay