在 codeigniter 4 中,我尝试使用 ; 打印视图中的会话变量$session->get('item')
;还有$session->item
,但不幸的是它不打印。但是使用$_SESSION
全局变量打印相同的变量。任何人都可以指导如何在视图中使用$session->get('item')
;或$session->item
。
会话变量通过两种方法在控制器中打印$session->get('item')
;和$session->item
。
在 codeigniter 4 中,我尝试使用 ; 打印视图中的会话变量$session->get('item')
;还有$session->item
,但不幸的是它不打印。但是使用$_SESSION
全局变量打印相同的变量。任何人都可以指导如何在视图中使用$session->get('item')
;或$session->item
。
会话变量通过两种方法在控制器中打印$session->get('item')
;和$session->item
。
这是一个有趣的话题。
这是我用来测试的一些代码...
我劫持了默认的 Home Controller app/Controllers/Home.php
protected $session;
public function index()
{
$this->session = \Config\Services::session();
$this->session->set('view_data','Hi there I am from the session');
$page['view_data'] =$this->session->get('view_data'); // Normal way
$page['session'] =$this->session; // Pass in the object
echo view('test_session_view',$page);
}
然后我创建了一个小测试文件来看看什么会起作用......
应用程序/视图/test_session_view.php
<?php
$local_session = \Config\Services::session(); // Needed for Point 5
?>
<h1>Test_Session_View.php</h1>
<h2>1. Passed in as normal view variable : <?= $view_data; ?></h2>
<h2>2. Passed in as the Session Object : <?= $session->get('view_data'); ?></h2>
<h2>3. The Ole Fashioned SESSION Global way: <?= $_SESSION['view_data']; ?></h2>
<h2>4. The Helper Way: <?= session('view_data'); ?></h2>
<h2>5. The local instance: <?= $local_session->get('view_data'); ?></h2>
默认情况下,$session(在我的例子中是 $this->session)不是“全局的”,因此它必须遵守与传递给视图的任何其他变量相同的规则。
当然,正如您所指出的,$_SESSION 是可以直接访问的,因为它是 GLOBAL。
如您所见,会话助手(第 4 点)为我们提供了更简单的访问。
这导致了第 5 点,这是会话助手所做的。它创建会话实例并执行“获取”。那是在System\Common.php 第 877 行ish函数 session(string $val = null)
因此,有几种方法可以访问视图中的会话数据。