未定义的变量 - 如何检查var是否存在

时间:2013-07-20 18:29:55

标签: php codeigniter variables undefined

我有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,否则我不会。

2 个答案:

答案 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;在第二个控制器上