0

私はこのビュー(メイン)を持っているとしましょう

<body>
lorem epsim
<div table></div>
lorem epsim
</body>

コントローラーcontrol1.phpで私はします

$this->load->view('header');
$this->load->view('main',$data);
$this->load->view('footer');

ここで、別のコントローラーから呼び出される別のビュー (tbl.php) から div=table のコンテンツをロードする必要があります。

control2.php

function load_table(){
$data['x']=1;
$this->load->view('tbl.php',$data);
}

tbl.php ビュー

<ul>$x</ul>

どうやってやるの ?

コントローラー1からコントローラー2をロードし、関数load_tableを変数に割り当ててそれをメインビューに渡そうとしましたが、出力を変数に保存する代わりにload->viewが実行されたため、機能しませんでした..

理由: これを行う必要があるのは、tbl.phpビューが複雑なテーブルであり、ajax呼び出しを介して更新およびロードする必要があるため、別のビューだけである必要があるため、これをどのように機能させることができるかを説明してもらえますかアウト ?

4

3 に答える 3

9

あるコントローラー メソッドを別の別のコントローラーから呼び出すことはできません。ただし、テーブル ビューの出力を取得して使用することはできます。

// main.php
<body>
lorem epsim
<div table><?php echo $table_content; ?></div>
lorem epsim
</body>

.

// control1.php

$table_data['x'] = 1;
$data['table_content'] = $this->load->view('tbl.php', $table_data, TRUE);

$this->load->view('header');
$this->load->view('main',$data);
$this->load->view('footer');

したがって、tbl.php ビューに渡すデータを取得し、それを load->view メソッドに渡します (これもTRUE3 番目のパラメーターとして渡します)。このメソッドは、そのビューの内容を文字列として返します (それをブラウザ)。これで、テーブル html を含むビューに渡す $data 変数がmainできました。これをメイン ビューにエコーするだけです。

$data['table_content']ビューからデータを取得する方法はあなた次第です。control1.php内に別のコントローラー メソッドを作成したり、ビューを文字列に読み込んで返すことができるヘルパー ファイルを作成したりできます。

于 2013-01-04T20:34:37.960 に答える
1

ビュー内では、php ブロックで以下を使用します

$CI = &get_instance();
$CI->load->view('view_name');
于 2014-03-11T17:07:27.910 に答える
1

たぶん、テーブルコードを含むビューを作成してから、ajax の div 内で行うことができます

<div id="for_ajax">
       <?php $this->load->view('table'); ?>
</div>

私は同様のニーズを持っていますが、問題に対するコメントの壁のようなものです。

于 2012-12-27T15:59:07.627 に答える