直接调用 View 内的 Model 类是否是最佳实践?目前我正在使用 CodeIgniter 开发应用程序。在我的应用程序的不同视图中,我包含了我想从数据库中提取的菜单。事情是目前我正在通过控制器将值传递给菜单。如果我创建一个通用模型类并从视图中调用它并通过控制器。这样就会有一个对 Model 的调用,它会立即从数据库中加载菜单并通过控制器。这样做会有什么好处和坏处?
问问题
224 次
4 回答
2
使用 codeigniter,您的视图不应该关心数据来自哪里,只关心它是否存在。只有您的控制器应该与您的模型直接接触。
听起来您有一个想要在视图中加载的通用菜单,并且您不想在所有控制器中复制该代码。
为了解决这个问题,您需要创建一个通用控制器,您的主控制器从该控制器中继承一个获取菜单的方法。
My_Controller
需要保存到core
目录中的文件夹中application
。
class MY_Controller extends CI_Controller
{
protected function get_menu()
{
// Load your menu here
$this->load->model('menu_model');
return $this->menu_model->get_menu();
}
}
您所有的主控制器都将继承MY_Controller
class Home_Controller extends MY_Controller
{
public function index()
{
$page_data = array('menu' => $this->get_menu());
$this->load->view('home/index', $page_data);
}
}
于 2013-03-21T13:44:52.657 回答
0
这是最糟糕的做法。那么为什么我们有 MVC 的控制器概念。:) 主要是所有逻辑都进入模型,所以直接调用模型不好。
于 2013-03-21T13:34:24.767 回答
0
在我看来,不,这不是最佳实践。视图应该联系控制器,控制器应该从模型中检索数据,其中模型完成所有逻辑。控制器假设是视图和模型的粘合剂或中间人。
控制器将返回的数据传递给 View,然后你执行你的 foreach 循环或任何显示它的操作。
视图不应该做任何逻辑。从数据库中检索数据有点逻辑。
于 2013-03-21T13:28:30.580 回答
-1
不会有任何问题,因为您使用的是通用控制器。
注意:您不应该直接从视图中调用模型。
于 2013-03-21T13:37:23.740 回答