我有2种类型的视图,我将向用户展示:登录页面以及您可以看到菜单的所有其他页面。 如果您尚未登录,则不会看到该菜单。
我现在想要实现的是使用1模板,其中页眉和页脚自动加载,内容是动态的,具体取决于哪个控制器称为视图。
目前我的登录控制器
$data['content'] = 'login_view';
$data['menu'] = 'nomenu';
$this->load->view('templates/template', $data);
这就是我在登录控制器
中的内容$data['content'] = 'profile_view';
$this->load->view('templates/template', $data);
就像你可以看到我不会发送$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
有没有办法检查我的$菜单是否存在,因为如果它是登录视图我只会发送$ menu,否则我不会。
答案 0 :(得分:0)
简单地使用isset
来检查变量是否已定义
<?php $this->load->view('templates/header'); ?>
<?php
if(isset($menu) && $menu== 'nomenu'){
}
else{
$this->load->view($menu);
}
?>
<?php $this->load->view($content); ?>
<?php $this->load->view('templates/footer'); ?>
你可能会将
load
放入if检查中,因为如果没有设置$ menu,那么在其他情况下它会触发未定义的错误你应该这样做
<?php $this->load->view('templates/header'); ?>
<?php
if(isset($menu) && $menu== 'nomenu'){
$this->load->view($menu);
}
else{
$this->load->view('load other view');
}
?>
<?php $this->load->view($content); ?>
<?php $this->load->view('templates/footer'); ?>
答案 1 :(得分:0)
或发送$ data ['menu'] = FALSE;在第二个控制器上