【发布时间】:2013-03-13 18:10:20
【问题描述】:
我可以在控制器中执行此操作:
$this->User->read(null, $id);
$this->User->find('list');
对吗?
我是否正确使用了 MVC?
这些easy功能可以在控制器中使用吗?或者,我需要在模型中创建这些函数吗?喜欢Model->getUser(),并让该功能使用Model->read()。
我知道它是由模型调用的函数,但是,当我想传递一些参数时,函数变大了,例如:
$this->User->find('all', array(
'conditions' => array(
'User.active' => true,
'User.group_id' => 3,
'User.age >=' => 18
)
));
我可以在Controller中调用这个函数,还是需要在Model中创建一个自定义函数来调用它?喜欢...$this->User->findSomeCustomFunction($param1, $param2, $param3)?
【问题讨论】:
-
要正确使用 MVC,您应该摆脱 CakePHP。它不实现 MVC 设计模式。活动记录实例不是“模型”,模板不是“视图”,控制器只负责改变模型层的状态。
-
我支持@tereško;但是,就此而言,我并不真正了解任何后端阻塞框架如何实现 MVC 模式。比如我是一个 Django 粉丝,据称是一个 MVC 框架。然而,尽管有“模型”和“视图”,但很难辨别 Django 中的 MVC 组件。我从来没有真正使用过 CakePHP,但在我有限的接触范围内,我也对 MVC 的名称感到困惑。有了 Cocoa/iOS 开发,MVC 就一目了然了。视图委托给控制器,控制器反过来与模型一起更新视图。
-
@tereško Ya... 如果 Cake 是 MVC 框架,我不知道(对我来说,它是)。但是现在......虽然不是一个正确的“mvc 框架”?
-
不要将 find()s 放入控制器中。您只会弄乱您的代码,进行更多更改以打破 DRY 概念,并使团队中的编程成为噩梦。 - 我的 2 美分。
-
@PatrickMaciel - Np!很高兴我能说服你:) 我真的认为从长远来看你会更高兴维护你的代码。
标签: php cakephp cakephp-model