2015-04-06 37 views
0

我有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视图中隐式地调用$ _SESSION [“user”],它将返回“superAdmin”,因为它应该如此。

任何人都可以在控制器中调用会话变量时看到错误吗?谢谢

回答

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'], 
)); 
0

您传递test变量template视图,但在尝试访问它admin/main视图。在admin/main视图中没有test变量。这些是不同的看法。每个人都有自己的变数。

您应该设置testadmin/main观点,如:

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

也有在Kohana中非常有用Session类。它负责框架内的会话业务。

看看user guide