PHP:在视图中显示会话变量:CodeIgniter
Posted
技术标签:
【中文标题】PHP:在视图中显示会话变量:CodeIgniter【英文标题】:PHP: Display Session variable in View: CodeIgniter 【发布时间】:2021-10-09 07:19:05 【问题描述】:正如标题中提到的,我在登录后尝试在视图部分中发送会话变量,
会话包含假设name
和email
。
所以我在配置文件控制器部分尝试的内容如下:
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>
您可以将<?php echo
替换为更短的版本<?=
<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->load->view
而不是 echo view
)
当我在控制器中加载多个视图时,比如说页眉、正文和页脚。 return view
只返回标题视图。 $this->load->view()
在 CodeIgniter4 中给出错误。这就是我使用echo view()
@EduardSukharev的原因以上是关于PHP:在视图中显示会话变量:CodeIgniter的主要内容,如果未能解决你的问题,请参考以下文章