0

私のクライアントは不完全な CMS を継承しており、クライアントがそれを修正するのを手伝おうとしています。私はフロントエンド開発の出身であることを心に留めておいてください。一部の人にとっては明白に見えるかもしれないいくつかのロジックは、完全に私を逃してしまいます。

そのため、CMS をほぼ完成させて改善することができましたが、ログインの問題があります。ユーザーが正しいユーザー名とパスワードを入力すると、すべてが正常に機能します。

ただし、「パスワードの入力を再試行してください」またはより適切なフレーズのメッセージなど、何か問題が発生したときにユーザーに示すのは簡単な礼儀です。しかし、今は何も起こりません。

そこで、コードを調べたところ、これら 2 つのファイルを比較することになりました。

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

app/View/Layouts/default.ctpファイルに次の行を追加します。

<?php  
   echo $this->Session->flash(); 
?>
于 2012-09-18T18:39:41.203 に答える
0

ビューでこれを使用してください:

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

これにより、コントローラーで設定しているフラッシュ メッセージが表示されます。

于 2012-09-18T18:10:34.443 に答える