-1

我将向用户展示两种类型的视图:登录页面和您可以看到菜单的所有其他页面。如果您没有登录,您将看不到菜单。

我现在想要实现的是使用 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 是否存在,因为如果它是登录视图,我只会发送 $menu,否则我不会。

4

2 回答 2

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'); ?>
于 2013-07-20T18:37:57.403 回答
0

或发送 $data['menu'] = FALSE ; 在第二个控制器上

于 2013-07-21T04:27:59.573 回答