我有两种类型的视图可以显示用户:登录页面和所有其他页面,您可以在其中看到菜单。 如果您未登录,则不会看到菜单。未定义的变量 - 如何检查var是否存在
我现在想要实现的是使用1个模板,其中页眉和页脚被自动加载,并且内容是动态的,取决于哪个控制器被称为视图。
此刻我在登录控制器
$data['content'] = 'login_view';
$data['menu'] = 'nomenu';
$this->load->view('templates/template', $data);
有这个,这是我在控制器
$data['content'] = 'profile_view';
$this->load->view('templates/template', $data);
登录我喜欢,你可以看到我赢了” t正在发送$data['menu']
和我的视图是像这样:
<?php $this->load->view('templates/header'); ?>
<?php
if($menu == 'nomenu'){
}
else{
$this->load->view($menu);
}
?>
<?php $this->load->view($content); ?>
<?php $this->load->view('templates/footer'); ?>
这里的问题是,我的登录控制器
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: menu
Filename: templates/template.php
Line Number: 7
有没有一种方法来检查,如果我的$菜单的存在,因为我只被发送$菜单如果它是登录视图,否则我不会。
不检查变量是否“未定义”。只要确保它*不可* * - 根据需要使用适当的默认/标记以确保它是“定义的”。这最终会创建更干净的代码。考虑到许多编程语言禁止使用“未定义”变量,并且在试图这样做的代码中将其视为*错误*。 – user2246674
我知道这是一个可能的解决方案,但是我总是必须在每个控制器中发送'data [menu]',但是我只想在它从登录控制器发送时发送它 – mXX
这就是我要做的!不要使用“未定义”的变量!另一方面,我发现可以使用带有可选键的地图集合。 – user2246674