我的客户端继承了一个不完整的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函数就会在几个地方使用,它就像魅力一样。
我有什么方法可以在用户登录之前使用它,或者我是否必须从头开始重新创建它?如果是这样,有什么可能会导致这样做,所以看起来和感觉相似?
谢谢!
答案 0 :(得分:0)
坚持在你的观点中使用它:
<?php echo $this->Session->flash(); ?>
这将显示您在控制器中设置的Flash消息。
答案 1 :(得分:0)
在app/View/Layouts/default.ctp
文件中添加以下行:
<?php
echo $this->Session->flash();
?>
答案 2 :(得分:0)
public $components = array('Session');
检查并添加“session”组件,如果它在AppController类中没有默认设置,则添加
<?php echo $this->Session->flash('your message'); ?>
到您的观点!