Php 为什么我的变量为空?
我目前正在编辑一个有PHP经验的工作项目 我知道一些基本知识,但我对MVC和CodeIgniter知之甚少,所以我当然会面临一些问题 我的第一个问题是,我试图填写一个控制器的下拉列表 该视图称为“overview\u screen.php”,控制器称为“overview.php” 在控制器中,我有一个功能:Php 为什么我的变量为空?,php,arrays,codeigniter,drop-down-menu,Php,Arrays,Codeigniter,Drop Down Menu,我目前正在编辑一个有PHP经验的工作项目 我知道一些基本知识,但我对MVC和CodeIgniter知之甚少,所以我当然会面临一些问题 我的第一个问题是,我试图填写一个控制器的下拉列表 该视图称为“overview\u screen.php”,控制器称为“overview.php” 在控制器中,我有一个功能: private function getYears() { return array('Test1', 'Test2', 'Test3', 'Test4'); } 我在索引中将其设
private function getYears()
{
return array('Test1', 'Test2', 'Test3', 'Test4');
}
我在索引中将其设置为$years:
function index()
{
$years = $this->getYears();
$menu = $this->getMenu();
}
当我在$menu上执行var_转储时,它会显示应该显示的菜单,但当我在$YERS上执行var_转储时,它会显示:
PHP Error was encountered
Severity: Notice
Message: Undefined variable: years
Filename: views/overview_screen.php
Line Number: 92
有人知道为什么会这样吗
[编辑]
补充资料:
<?php
print_r(CI_session::userdata('docent_id'));
if (!$this->session->userdata('docent_id')) {
header ('Location: /bpv-registratie/welcome.html');
}
?>
<html>
<head>
<title>Registratie Systeem</title>
</head>
<body>
<div id="topmenu">
<a href="/registratie/" class="button">Start</a>
<a href="/registratie/welcome/logout.html" class="button">Log uit</a>
</div>
<div id="topmenuright">
<?php var_dump($years); ?>
<select>
<?php foreach ($years as $row):?>
<option><?=$row?></option>
<?php endforeach;?>
</select>
</div>
<div id="menu">
{menu}
</div>
<div id="content">
{content}
</div>
</body>
</html>
登记制度
{menu}
{content}
如果var\u dump
函数/类之外的$menu
变量,它将不起作用!
尝试使用:
function index()
{
global $years;
global $menu;
$years = $this->getYears();
$menu = $this->getMenu();
}
您需要发送变量以查看文件,如下所示
function index()
{
$data['years'] = $this->getYears();
$data['menu'] = $this->getMenu();
$this->load->view('views/overview_screen.php',$data);
}
现在,您可以使用$year,$menu作为视图文件中的变量您可以给出更多关于转储调用放置在何处以及关于getMenu body的代码示例吗。这将有助于了解$years var发生了什么。给定输出,您的视图可能会通过CI的解析器库 代码应该是这样的:
function index()
{
$this->load->library('parser');
$data['years'] = $this->getYears();
$data['menu'] = $this->getMenu();
$this->parser->parse('overview_screen',$data);
}
我这样说是因为我看到视图文件中使用了方括号,这就是CI使用自己的解析引擎的方式(因此{menu}
被视为
,反过来,它引用了您在$data数组中设置的索引“menu”)
你经常称之为风景;它类似于@praneth代码,但没有使用php扩展!
因此:
您如何将数据传递到视图?@Dalen:正如所说,我正在使用这个应用程序,因此我不知道它是如何工作的,因此我不知道code igniter如何在控制器和视图之间创建连接。这给了我一个错误,即无法找到views/overview\u screen.php。或者
.php
。除非与php不同,否则不需要扩展
$this->load->view('overview_screen',$data)