我似乎无法弄清楚如何创建一个灵活的侧边栏包含和登录窗体(Zend_Form)和各种模块/控制器特定的链接。使用Zend表单在每个页面上显示登录表单
最常见的解决方案似乎可以用:
echo $this->action('login', 'authentication', 'default');
但apperently这个心不是 '最好' 的方法是什么?我读过这个apprently触发一个dispatchloop,从而使性能受到影响?
我想过唱的侧边栏View_Helper:
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
}
}
在我Form_Login我有动作设定/认证/登录其中包含以下代码:
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');
}
}
}
}
如果我提供错误的用户名/密码,它呈现了当前为空的indexAction。这可以。它也根据需要呈现包含loginForm的边栏,但表单为空(不显示用户输入,也不是表单无法验证的消息)。
表单中的用户名字段应显示用户在提交之前提供的输入。并且应该显示错误消息。
任何帮助,为什么这不是happing,非常appriciated。