0

我的客户继承了一个不完整的 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 函数会在多个地方使用,它的工作原理就像一个魅力。

在用户登录之前我有什么方法可以使用它,还是我必须从头开始重新创建它?如果是这样,这样做的原因可能是什么,所以它看起来和感觉相似?

谢谢!

4

3 回答 3

0

坚持在你的观点中使用它:

<?php echo $this->Session->flash(); ?>

这将显示您在控制器中设置的 Flash 消息。

于 2012-09-18T18:10:34.443 回答
0

在您的app/View/Layouts/default.ctp文件中添加以下行:

<?php  
   echo $this->Session->flash(); 
?>
于 2012-09-18T18:39:41.203 回答
0
public $components = array('Session');

如果在 AppController 类中默认未设置“会话”组件,请检查并添加它,然后添加

<?php echo $this->Session->flash('your message'); ?> 

在你看来!

于 2013-11-27T09:07:24.600 回答