0

コントローラーのメソッドを動的に初期化し、ネストされたビューの出力データを収集しようとしています。ビュー内の $data['something'] のインスタンスと、この呼び出しの関数が適切なビュー php ファイルを呼び出すたびにチェックすることを避けたいと思います。

class Admin extends CI_Controller {

    function __construct()
    {
        parent::__construct();
    }

    public function _remap($method, $params = array())
    {
        $this->view($method, $params);
    }
    public function view($method, $params)
    {
        $param = (implode(",", $params));
        $data = array();
        if (method_exists($this,$method) ){
            $param = !empty($param) ? $param : '';
            $data = call_user_func_array(array($this, $method), array($param));
            // and load the data array in the main view
            $this->load->view('admin/dashboard', $data);
        } else {
            $this->load->view('admin/404', $data);
        }
    }

    public function _one_of_mymethod(){
        $data['nested_view'] = 'view1';
        //calling models gather $data
        return $data;
    }

}

データ配列の関数よりも、右のネストされたビューを出力します。

メインビュー

次のようなものになります

<div class="sidebar"><?php $this->view('admin/sidebar'); ?></div>
<div id="content"><?php $this->view('/admin/'. $nested_view) ?></div>

しかし、これは ajax 呼び出しを使用する場合の適切なアプローチではないようです。ネストされたビューを動的に追加する最良の方法は何ですか?

4

1 に答える 1

0

JQuery を使用している場合は、常にこのように JQuery $.load メソッドを使用できます

$('.sidebar').load('<?php site_url('controllername/methodname')?>');

そして、ここにメソッド名があります

function methodname(){
    $this->view();
   // do any stuff you want.
}
于 2013-02-26T12:49:46.777 に答える