0

データ配列を作成して渡します。

public function home()
{


    $data['page'] = 'home';
    $data['table'] = 'pageData';
    $data['temp'] = 'temp_1';

    $this->template($data);


}


    public function template($data)
{

    $this->load->model("model_get");


    $data['results'] = $this->model_get->getData($data);

    $this->load->view('template', $data);


}

これはテンプレートビューです。

<?php

$this->load->view('header');

$this->load->view('nav', $data);

$data['results'] = $results;

$this->load->view($temp, $data);

$this->load->view('footer');

?>

次の場所で未定義変数の例外をスローします。

$this->load->view('nav', $data);

ただし、ビューをロードし、その中のすべてのifステートメントを完了して、に格納されている名前からビューをロードします$temp

なぜ例外をスローするのですか?

4

1 に答える 1

0

2 番目のビューを読み込むために、そのビューに $data を入力していません。あなたのコードの名前は漠然としていて、何をするべきかを本当に理解することはできませんが、分解してみましょう。

public function home()
{
$data['page'] = 'home';
$data['table'] = 'pageData';
$data['temp'] = 'temp_1';
$this->template($data);
}


public function template($data)
{
$this->load->model("model_get");
$data['results'] = $this->model_get->getData($data);
//I assume getData takes a table name and returns all the data
//This only works because you're taking all the data passed from the first function
//in the function above.
$this->load->view('template', $data);
}


<?php
$this->load->view('header');
$this->load->view('nav', $data);
//At this point $data is empty. You have available $results, $page, $table and $temp
//because they were passed from the template function above.
$this->load->view('nav', $results);
//The line above is what it appears you need, rather than $data.
$data['results'] = $results;
//You've repopulated $data here but now all it contains is $results.
$this->load->view($temp, $data);
$this->load->view('footer');
?>

あなたが誤解しているのは、 $data が永続的ではないということです.2番目のパラメーターとして $data をビューにロードしてビューに渡すと、そのコンポーネントに分解されるため、 $data 自体は使用できなくなります。

于 2012-12-09T11:55:31.607 に答える