Je n'arrive pas à comprendre comment créer un formulaire de connexion et de connexion (Zend_Form) flexible et divers liens spécifiques au module/contrôleur.Afficher le formulaire de connexion sur chaque page en utilisant Zend Form
La solution la plus courante semble utiliser:
echo $this->action('login', 'authentication', 'default');
Mais Apperently ce n'est pas la 'meilleure'? J'ai lu que cela déclenche un dispatchloop et donc prendre un coup de performance?
J'ai pensé à chanter une Ma_View_Helper pour la barre latérale:
class Zend_View_Helper_Sidebar extends Zend_View_Helper_Abstract
{
public function sidebar()
{
$sidebar = $this->view->placeholder('sidebar');
$sidebar->setPrefix('<div class="sidebar-element">')
->setSeparator('</div><div class="sidebar-element">')
->setPostfix('</div>');
$sidebar->append(new Form_Login);
$sidebar->append(new Model_Category->getList());
return $sidebar
}
}
Dans mon Form_Login j'ai l'action définie sur/auth/connexion qui contient le code suivant:
public function loginAction()
{
$request = $this->getRequest();
if($request->isPost()) {
$form = new Form_Login();
$data = $request->getPost();
if($form->isValid($data)) {
$username = $form->getValue('username');
$password = $form->getValue('password');
$users = new Model_DbTable_Users();
$authenticated = $users->login($username, $password);
if($authenticated) {
//Succes - show identity instead of loginForm
} else {
$this->view->loginForm = $form;
$this->render('/index');
}
}
}
}
Si je fournir le mauvais nom d'utilisateur/mot de passe il rend indexAction qui est actuellement vide. C'est bon. Il rend également ma barre latérale contenant le formulaire de connexion au besoin, mais le formulaire est vide (l'entrée de l'utilisateur n'est pas affichée, ni aucun message que le formulaire n'a pas réussi à valider).
Le champ de nom d'utilisateur dans le formulaire doit afficher l'entrée fournie par l'utilisateur avant la soumission. Et un message d'erreur devrait être affiché.
Toute aide pour expliquer pourquoi cela ne se produit pas, est très appréciée.