-1

ユーザーに表示する 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 を送信するため、 $menu が存在するかどうかを確認する方法はありますか?

4

2 に答える 2

0

または $data['menu'] = FALSE を送信します。2番目のコントローラーで

于 2013-07-21T04:27:59.573 に答える
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$menu が設定されていない場合、そうでない場合は未定義エラーが発生するため、おそらく if チェックに入れます。このようにする必要があります

<?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 に答える