1

$_POST データをリッスンするために、Signin コントローラーにこれを持っています。

<?php

use \Phalcon\Tag;

class SigninController extends BaseController {

    public function indexAction()
    {
        Tag::setTitle('Login');

        // if submit
        if ($_POST) {

            $user = Users::findFirst([
                "email = :email: AND password = :password:",
                "bind" => [
                    "email"    => $this->request->getPost('email'),
                    "password" => $this->request->getPost('password')
                ]
            ]);

            if ($user) {
                $this->session->set('id', $user->id);
                $this->session->set('role', $user->role);
                $this->response->redirect("account");
            } else {
                $this->flash->error('Wrong credentials!');
                $this->response->redirect('signin');
            }

        }

    }

}

しかし、フォームを送信すると、「資格情報が間違っています」というフラッシュ メッセージが表示されません。ページがリロードされるだけです。

私は base.volt テンプレートにこれを持っています:

<body>

    {{ flash.output() }}

    {% block content %}

    {% endblock %}

</body>

if($_POST) 条件を除くすべてで機能します。

私はブートストラップファイルにこれを持っています:

$di->set('flash', function() {
        $flash = new \Phalcon\Flash\Session([
            'error'   => 'alert alert-danger',
            'success' => 'alert alert-success',
            'notice'  => 'alert alert-info',
            'warning' => 'alert alert-warning',
        ]);
        return $flash;
    });

if($_POST) 条件内でフラッシュメッセージが機能しない理由は何ですか?

4

3 に答える 3

0

私はテストされています!

1.ブートストラップファイル

$di->set('flash', function(){
    return new Phalcon\Flash\Session(array(
        'error' => 'alert alert-error',
        'success' => 'alert alert-success',
        'notice' => 'alert alert-info',
    ));
});

コントロール:

$this->flash->error('Some Message');
$this->response->redirect('signin/index');

意見:

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

2.ブートストラップファイル

$di->set('flash', function(){
        return new Phalcon\Flash\Direct(array(
            'error' => 'alert alert-error',
            'success' => 'alert alert-success',
            'notice' => 'alert alert-info',
        ));
    });

コントロール:

$this->flash->error('Jump to other page');
$this->dispatcher->forward(array('controller' => 'signin', 'action' => 'index'));

意見:

<?php 
    echo $this->getContent();
?>
于 2014-07-03T09:27:34.187 に答える