PHP:在视图中显示会话变量:CodeIgniter

Posted

技术标签:

【中文标题】PHP:在视图中显示会话变量:CodeIgniter【英文标题】:PHP: Display Session variable in View: CodeIgniter 【发布时间】:2021-10-09 07:19:05 【问题描述】:

正如标题中提到的,我在登录后尝试在视图部分中发送会话变量, 会话包含假设nameemail

所以我在配置文件控制器部分尝试的内容如下:

class ProfileController extends Controller
public function index()
 
    $session = session();

    $userDetails = ['name' => $session->get('name'),
                     'email' => $session->get('email')];
    print_r($userDetails);
    echo view('profile', $userDetails); 

虽然我能够在控制器部分中打印 $userDetails 值,但我在 VIEW 中尝试的同样方法没有给我任何结果。

这是我的profile.php 代码。

<h3>Welcome to the Profile Section : <?php echo $userDetails['name']; ?></h3>
<p>Your email id : <?php echo $userDetails['email'] ; ?></p>

我得到的输出是:

如果我是 PHP 框架的新手,如果我遗漏了什么,请纠正我。

【问题讨论】:

【参考方案1】:

在您的视图中,您只需将数组命名为索引,因为它们被转换为变量。

所以$userDetails['name'] 变成了$name 并且 $userDetails['email'] 变为 $email

所以在你的情况下。 而不是

<h3>Welcome to the Profile Section : <?php echo $userDetails['name']; ?></h3>
<p>Your email id : <?php echo $userDetails['email'] ; ?></p>

你会的。

<h3>Welcome to the Profile Section : <?php echo $name; ?></h3>
<p>Your email id : <?php echo $email ; ?></p>

您可以将&lt;?php echo 替换为更短的版本&lt;?=

<h3>Welcome to the Profile Section : <?= $name; ?></h3>
<p>Your email id : <?= $email ; ?></p>

我强烈建议阅读 CodeIgniter 用户指南,因为它涵盖了这一点以及框架所做的所有其他事情。所以熟悉一下就好了。

【讨论】:

【参考方案2】:

你可以使用 laravel 的 compact 函数支持从你的变量中创建数组,并返回一个你想要的视图

 return view('profile', compact('name','mail'));

在视图中,您可以像这样通过 $name 调用它:

 <h3>Welcome to the Profile Section : $name></h3>

【讨论】:

感谢您的努力。但是我问的问题是关于codeigniter框架的,我不知道上面的代码是否适用。 答案提供了一种与框架无关的做事方式。另外,请注意您呈现视图的方式——正确的方式可能与您所做的不同(例如 return view$this-&gt;load-&gt;view 而不是 echo view 当我在控制器中加载多个视图时,比如说页眉、正文和页脚。 return view 只返回标题视图。 $this-&gt;load-&gt;view() 在 CodeIgniter4 中给出错误。这就是我使用echo view()@EduardSukharev的原因

以上是关于PHP:在视图中显示会话变量:CodeIgniter的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中增加会话变量的问题。它只增加一次

会话变量未在实时服务器中传递[关闭]

使用 RedirectToAction 后会话变量为空

根据从 MySQL 中提取的一个值创建 PHP 会话变量

会话变量未结转

在 PHP 登录脚本中使用会话和会话变量