无法在PhalconPHP中的if($ _ POST)条件下使用flash消息

时间:2014-07-02 12:10:49

标签: php phalcon phalcon-routing

我在我的Signin控制器中有这个来监听$ _POST数据:

<?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');
            }

        }

    }

}

但是闪存消息带有&#34;错误的凭据&#34;我提交表格时没有显示。 该页面只是重新加载。

我在base.volt模板中有这个:

<body>

    {{ flash.output() }}

    {% block content %}

    {% endblock %}

</body>
除了($ _ 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;
    });

知道为什么flash消息在if($ _ POST)条件下无效?

3 个答案:

答案 0 :(得分:0)

我经过测试!

1.bootstrap文件

$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.bootstrap文件

$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();
?>

答案 1 :(得分:0)

我遇到了同样的问题!

事实上,我们的问题与 if($ _POST)声明没有任何关系。

我们认为导致这个问题。要解决此问题,在设置Flash消息之前就像禁用视图一样简单:

$this->view->disable();
$this->flash->error('Wrong credentials!');
$this->response->redirect('signin');

答案 2 :(得分:0)

两种方法: 使用$ this-&gt; flash-&gt;错误('Some Message'); 视图:

的getContent(); ?&GT;

使用$ this-&gt; flashSession-&gt;错误('Some Message'); 视图:

flashSession-&gt; output()?&gt;