Phalcon-php未定义的变量会话


Phalcon php undefined variable session

我正在学习Phalcon,并试图将username设置为会话OOP Phalcon样式。以下是我的控制器中的内容:

$users = Users::find(array($conditions, 'bind' => $parameters));
            if (count($users) > 0) {
                //login
                $this->session->start();
                $this->session->set("username", $username);
                $this->view->successMessage = "You are logged in";
            }

这是loginAction的一大块。如果我打印_r($_SESSION(;在login.volt(用户在登录操作后被重定向(中,它打印出会话,但在其他视图中,当我尝试打印会话时,我会收到一个错误:未定义的变量会话。在我的服务中.php我有

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

感谢的任何帮助

编辑让我这样说吧。在普通php中,我可以做如下操作:用户名;?>

然后我可以做一些类似的事情:

 <?php 
        if (isset($_SESSION['username']))  
             {  
                echo '<input type="submit" name="Button" value="button"'; 
             }
 ?>

Phalcon中的等价物是什么?

当您通过DI::getShared('session')检索共享服务时(在您的情况下,通过$this->session在控制器中(,它将为您启动会话,因此无需再次手动启动。在文档中,这里几乎是你应该怎么做的。

另一点是,使用会话包或持久存储最有意义,其次使用与会话包相同的实现,但有点快捷。

实际上,在视图中检索会话数据也是一个有效的观点——你应该将其作为视图变量传递,而不是在视图中实现该逻辑(如果你想要更多正确的Phalcon方法(。我错过了关于print_r($_SESSION)的部分。你真的能$this->view->setVar('myValue', 'my session value');吗?看看它在其他视图/控制器中是否有效。

要在一个地方为您的会话包设置值,请执行以下操作:

$users = Users::find(array($conditions, 'bind' => $parameters));
    if (count($users) > 0) {
        $user           = new Phalcon'Session'Bag('user');
        $user->username = $username;
    }
}

然后在另一个控制器中的其他位置检索它,并将其作为变量传递给视图:

$user = new Phalcon'Session'Bag('user');
$this->view->setVar('userName', $user->username);

然后在伏特视图中打印它:

{% if username %}
    <input type="submit" name="Button" value="{{ username }}">
{% endif %}