Phalcon Direct Flash消息未在视图中正确加载

时间:2018-04-01 11:04:08

标签: php phalcon

我正在学习phalcon:虽然仍然是一个粗糙的初学者。我想为我的网络应用创建一个注册部分。目前我有:

  

名为AuthController的控制器       with actions:index [登录逻辑],注册[注册逻辑]   登录viewviews / auth / index.phtml。   注册视图为views / auth / register.phtml,表单发布到auth / register

还使用Twitter Bootstrap作为前端。

我目前正在尝试验证密码。如果不相等,则显示闪烁消息。

注册行动准则:

if($this -> request -> isPost())
        {
            $name = $this -> request -> getPost('fullname');
            $username = $this -> request -> getPost('email');
            $password = $this -> request -> getPost('password');
            $vpassword = $this -> request -> getPost('cpassword');

            if($password != $vpassword)
            {
                $this -> flash -> error("The passwords doesn't match!!!");
                //return $this -> view -> pick('register'); //Show page/ no error msg
                /*return $this->dispatcher->forward(        //show error/ no page / cyclic routing
                    [
                        'controller'    => 'auth',
                        'action'        => 'register'
                    ]
                );*/
                // Make a full HTTP redirection
                //return $this->response->redirect('auth/register');
            }

目前,如果我使用:

return $this -> view -> pick('register');

我回来了,但没有flash错误消息

而且,如果我使用;

return $this->dispatcher->forward(
                    [
                        'controller'    => 'auth',
                        'action'        => 'register'
                    ]
                );

我多次显示错误消息,没有查看。我认为循环路由正在发生,但是isPost()检查不应该阻止它吗?如果是POST,则密码字段中的值将相同。

Any ideas?

1 个答案:

答案 0 :(得分:0)

在您的进样器中设置闪光灯之前,您的会话已设置好了吗? 初始化会话和闪存:

/**
* Start the session
*/

$di->set('session', function() {
    $session = new \Phalcon\Session\Adapter\Files();
    $session->start();
    return $session;
}, true);

/**
* Register the flash service with custom CSS classes
*/

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

    return $flash;
});