我的客户继承了一个不完整的 CMS,我正试图帮助他们修复它。请记住,我来自前端开发,一些对你们中的一些人来说似乎很明显的逻辑完全让我难以理解。
所以我设法完成并改进了 CMS,但是存在登录问题。如果用户输入正确的用户名和密码,一切正常。
但是,在发生错误时向用户指示是一种简单的礼貌,例如“重试输入密码”或一些更好的措辞信息。但现在什么也没有发生。
所以我查看了代码,最后比较了这两个文件:
login.ctp (视图,据我所知)
<?php
echo $this->Session->flash('auth');
?>
<div id="loginColumns">
<!-- input fields -->
<div id="loginLeftColumn">
<?php
echo $this->Form->create('User',array('action'=>'login'));
echo $this->Form->input('username');
echo $this->Form->input('password');
?>
</div>
<!-- login button -->
<div id="loginRightColumn">
<?php echo $this->Form->end('Continue'); ?>
</div>
</div>
UsersController.php(控制器,顾名思义)
<?php
class UsersController extends AppController
{
var $name = 'Users';
public $scaffold;
public function beforeFilter()
{
$this -> Auth -> allow(array('login', 'logout'));
}
public function login()
{
if($this -> request -> is('post'))
{
if($this -> Auth -> login())
{
$this -> redirect($this -> Auth -> redirect());
}
else
{
// this does not work, maybe because there is no session yet
// when users have not logged in yet?
$this -> Session -> setFlash(__('Invalid username or password, try again'));
}
}
}
function logout()
{
$this -> redirect($this -> Auth -> logout());
}
}
?>
如您所见,在记录时似乎有一些处理错误的东西,但没有显示任何内容。用户登录后,setFlash 函数会在多个地方使用,它的工作原理就像一个魅力。
在用户登录之前我有什么方法可以使用它,还是我必须从头开始重新创建它?如果是这样,这样做的原因可能是什么,所以它看起来和感觉相似?
谢谢!