【问题标题】:MVC confusion (codeigniter)MVC 混淆(codeigniter)
【发布时间】:2017-02-17 21:36:46
【问题描述】:

使用 CodeIgniter 或任何 MVC 框架,前提是 Model 是数据库包装器,并且 Controller 不得包含有关数据库或与数据库的任何连接的任何信息。 p>

现在,如果一个人使用方法创建一个通用模型类,请说“DB_Model

add($table, $fields)

要使用此方法,该人必须从 Controller 中调用它

$this->DB_Model->add('my_table_name', $fields)

现在的问题是,Model-View-Controller 框架的定义是不是错了?我的意思是,Controller 现在获得了有关数据库的信息。

谢谢

编辑:我不是在质疑 CI,而只是在质疑某些人在应用程序和编码上花费更少时间的上述做法。

【问题讨论】:

  • 但不是模型在做实际的数据库工作吗?
  • $db_model_obj = new DB_Model();
  • $db_model_obj->someFunction();
  • $this->render('some_view',array('some_key'=>$db_model_obj));
  • 您不要在模型层中创建需要表名的方法。如果您正在接受订单,则方法应为create_order($some_post_fields_array)。控制器调用$result = $this->BI_model->create_order($post_data);。您甚至不必在任何地方使用字母 DB。

标签: php codeigniter model-view-controller


【解决方案1】:

所以 CI 的工作方式是

在完成实际数据库工作的模型中创建一个方法。 https://www.codeigniter.com/user_guide/general/models.html

创建一个调用模型的控制器:

class Blog_controller extends CI_Controller {

        public function blog()
        {
                $this->load->model('blog');
                $data['query'] = $this->blog->get_last_ten_entries();
                $this->load->view('blog', $data);
        }
}

示例取自上面的链接。

编辑:是的,我认为这是错误的,它没有按照他们告诉你的方式正确解耦(?)。

【讨论】:

  • 我会称之为 CI MVC-ish。其中一个卖点是:CodeIgniter 鼓励 MVC,但不会强加给您。
猜你喜欢
  • 2015-11-05
  • 2015-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2017-04-09
  • 1970-01-01
相关资源
最近更新 更多