コントローラーのメソッドを動的に初期化し、ネストされたビューの出力データを収集しようとしています。ビュー内の $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 呼び出しを使用する場合の適切なアプローチではないようです。ネストされたビューを動的に追加する最良の方法は何ですか?