我正在使用codeigniter这样的控制器在主视图中加载视图
控制器
public function product_modules($domain_id)
{
$this->load->model('/admin/Model_products', '', TRUE);
$data['product_boxes'] = $this->Model_products->getProducBoxes($domain_id);
$this->load->view('admin/dashboard',$data, null, true);
}
主视图
$this->view($_SERVER['REQUEST_URI']);
但是如果请求的uri包含查询字符串,则视图不会被加载,我得到一个类型Unable to load the requested file: /admin/product_modules/1.php
。动态调用视图的最佳解决方法是什么?
答案 0 :(得分:1)
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Example extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function _remap($method, $params = array())
{
// dynamically assign the method with parameters support
$this->view($method, $params);
}
public function product_modules($domain_id)
{
$this->load->model('/admin/Model_products', '', TRUE);
$data['product_boxes'] = $this->Model_products->getProducBoxes($domain_id);
$this->load->view('admin/dashboard', $data, null, true);
}
public function view($method, $param1 = '', $param2 = '')
{
// params you can sent to models
$data['users'] = $this->model_name->get_user($param1);
// or views
$data['myvar'] = $param2;
// and load the view dynamically
$this->load->view($method, $data);
}
}
所以
如果网址为http://example/controller/method
,则上述内容将搜索method.php
视图文件,
如果网址为http://example/controller/product_modules/1
,则会搜索product_modules.php
视图文件。
希望这会有所帮助。谢谢!