我认为解决方案比您想象的要容易。
如果现在你在你的助手中做这样的事情:
create_menu()
{
$menu_items = $this->db->query('')->result();
// creating the menu here
}
您可以更改函数以接受这样的输入,并且仍然遵循 MVC 模式。
帮手
create_menu($input)
{
$menu_items = $input;
// creating the menu here
}
模型:
get_menu_data()
{
$menu_items = $this->db->query('')->result();
}
这有意义吗?
编辑:
这是我在其中一个项目上的做法:
我扩展了我的标准控制器。在该控制器的构造函数中,我调用了模型并获取了数据:
$this->menu_items = $this->some_model->get_menu_items();
在一个视图中nav.php
:
if(!empty($this->subnav_item))
{
// Generate menu
}
这样 MVC 是完整的,但我不必担心传递变量。
编辑 2
如何扩展标准控制器:
MY_Controller.php
在中创建文件application/core
class MY_Controller extends CI_Controller {
public $menu_items = '';
function __construct()
{
parent::__construct();
$this->load->model('some_model_that_you_always_use');
$this->load->library('some_library_that_you_always_use');
$this->menu_items = $this->some_model->get_menu_items();
}
}
当你创建一个新的控制器时,你扩展MY_Controller
而不是CI_Controller
这样:
class Something extends MY_Controller {
}