为了让用户登陆到系统中,你需要在页面中放置一个表单来接受用户的用户名和密码。Solar视图(Solar_View)中可用的表单辅助类(Solar_View_Helper_Form)可以非常轻松地在任何视图或布局中添加表单。
Note | |
---|---|
要了解如何操作视图和布局,请复习第五章视图和布局。 |
下面介绍一下用户验证表单的逻辑:
如果用户没有登陆,则显示登陆表单。如果用户已经登陆,用户将会看到一个欢迎页面,而且页面里有一个“退出”按钮(注销表单)。在登陆表单和注销表单下面会显示状态消息,如:“欢迎回来!”或是“您的用户名或密码错误,请再尝试一次。”。
上面的逻在视图中用代码实现如下(假设公共属性$user
是视图可用的一个Solar_User对象):
<div id="user"> <?php if ($this->user->auth->isValid()) { // the user is logged in, show a logout form echo "<div>\n" . $this->getText('TEXT_AUTH_USERNAME') . "\n" . $this->escape($this->user->auth->handle) . "\n" . "</div>\n"; echo $this->form() ->addProcess('logout') ->decorateAsDivs() ->fetch(); } else { // the user is not logged in, show a login form echo $this->form() ->text(array( 'name' => 'handle', 'label' => 'LABEL_HANDLE', )) ->password(array( 'name' => 'passwd', 'label' => 'LABEL_PASSWD', )) ->addProcess('login') ->decorateAsDivs() ->fetch(); } // always show the authentication status $status = $this->user->auth->getStatusText(); if ($status) { echo '<div class="status">' . $this->escape($status) . "</div>\n"; } ?> </div>
因此,如果用户已经登陆(根据$this->user->auth->isValid()
方法调用的结果可以判断),就会显示一个“Signed
in as ...”消息,消息下面会显示一个“注销”按钮。除此之外,任何状态消息(如:“欢迎回来!”)都会显示在“注销”按钮下面。(这些状态消息是Solar_Auth适配器根据登陆和注销过程成功或失败自动产生的。)
如果用户没有登陆,或验证请求失败,那么将会显示登陆表单,表单下面将会显示相关的状态消息。来看一下示例图片:
上面这张图片显示一次成功登陆。注意看下注销表单上面的欢迎消息和下面的状态消息。
上面这张图片显示一次失败登陆。注意看下登陆表单下面的状态消息。