无法在Kohana控制器中访问会话变量

时间:2015-04-06 11:15:45

标签: php session kohana

我对kohana框架有一个神秘的问题。

我在控制器功能中创建会话变量:

public function action_authorise()
    {
        session_start();
        $_SESSION["user"] = "superAdmin";
    }

后来在同一个控制器的另一个功能中,我尝试访问本赛季:

public function action_getSession()
    {
        $this->template->test = $_SESSION["user"];
        $this->template->content = View::factory('admin/main');
    }

问题在于,当我在admin / main视图中调用$ test变量时,它返回空字符串,但如果我在admin / main视图中隐式调用$ _SESSION [“user”],它将返回“superAdmin”。

在控制器中调用会话变量时,有人能看到错误吗?感谢

2 个答案:

答案 0 :(得分:0)

这里的问题是您将变量测试传递给视图template,并且需要将其传递给视图admin/main。你可以通过几种方式做到这一点,选择你最喜欢的方式:

// Create the view object
$partial_view = View::factory('admin/main');
// Assign the session value to the partial view's scope as `test`
$partial_view->test = $_SESSION["user"];
// Assign the partial view to the main template's scope as `content`
$this->template->content = $partial_view;

快捷语法:

$this->template->content = View::factory('admin/main', array(
    'test' => $_SESSION['user'],
));

答案 1 :(得分:0)

您将test变量传递给template视图,但尝试访问admin/main视图。 test视图中没有admin/main变量。这些是不同的观点。每个人都有自己的变量。

您应该将test设置为admin/main视图,如:

public function action_getSession()
    {
        $this->template->content = View::factory('admin/main')
            ->set('test', $_SESSION["user"]);
    }

Kohana也有非常有用的Session课程。它负责框架内的会话业务。

看看user guide