Кажется, я не могу понять, как создать гибкую боковую панель, содержащую форму для входа в систему (Zend_Form) и различные ссылки для отдельных модулей / контроллеров.
Наиболее распространенным решением, по-видимому, является использование:
echo $this->action('login', 'authentication', 'default');
Но, по-видимому, это не лучший путь? Я читал, что это запускает диспетчерскую блокировку и тем самым снижает производительность?
Я думал о том, чтобы спеть 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 у меня установлено действие / auth / 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, если необходимо, но форма пуста (пользовательский ввод не отображается. Также нет сообщения о том, что форма не была проверена).
Поле username в форме должно отображать ввод, предоставленный пользователем перед отправкой. И сообщение об ошибке должно отображаться.
Любая помощь относительно того, почему это не происходит, очень ценится.