无法访问 Kohana 控制器中的会话变量
Posted
技术标签:
【中文标题】无法访问 Kohana 控制器中的会话变量【英文标题】:Can't access session variable in Kohana controller 【发布时间】:2015-06-10 18:52:21 【问题描述】:我对 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”。
在控制器中调用会话变量时,任何人都可以看到错误吗?谢谢
【问题讨论】:
【参考方案1】:这里的问题是您将变量 test 传递给视图 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'],
));
【讨论】:
【参考方案2】:您将test
变量传递给template
视图,但试图访问它admin/main
视图。 admin/main
视图中没有 test
变量。这些是不同的看法。每个都有自己的变量。
您应该将test
设置为admin/main
视图,如:
public function action_getSession()
$this->template->content = View::factory('admin/main')
->set('test', $_SESSION["user"]);
在 Kohana 中还有非常有用的 Session
类。它负责框架内的会话业务。
看看user guide。
【讨论】:
以上是关于无法访问 Kohana 控制器中的会话变量的主要内容,如果未能解决你的问题,请参考以下文章
没有登录会话,任何人都无法访问 codeigniter 4 中的控制器