对不起这个基本问题。以下是我的Userscontroller.php
中提供的代码public function register()
{
//Setting some data
$this->User->create();
$this->User->save($this->request->data)
}
public function edit()
{
//Setting some data
$this->User->save($this->request->data)
}
public function admin_add()
{
//Setting some data
$this->User->create();
$this->User->save($this->request->data)
}
public function admin_edit()
{
//Setting some data
$this->User->save($this->request->data)
}
我的一位资深人员审核了这段代码并说上面的代码不符合CAKEPHP标准。商业逻辑需要转移到模型
如模型
中所示<?php
class User extends AppModel {
//Validation parts
public functions savingData($data =array(), $id=false)
{
if($id == false)
{
$this->create();
}
$this->User->save($data)
}
}?>
在控制器中,他要求为创建和更新选项调用 savingData 函数
答案 0 :(得分:3)
在MVC中,业务规则转到模型。
但在您的示例中没有任何业务逻辑,因此您的代码在控制器中是正确的。
我建议使用cakephp控制台来创建控制器和模型,你可以自己搞定。
答案 1 :(得分:0)
通常任何具有验证或将数据保存到其他表的方法或任何额外的功能,使操作大于您需要考虑的一个页面(将功能分解为更小的功能),您可以根据需要设置此功能并访问模型或组件。我可以说胖模型概念和Component用于这种情况。
我认为方法不应该超过一页,这使得应用程序可以为下一个开发人员维护。
任何静态方法都可以在Utility中作为一个类,可以从控制器或视图中轻松调用。
请记住,Cake有很多模型行为,包含在所有模型中。比如beforeSave(),afterSave(),initiate(),delete()之前和之后......
最后,完全取决于您如何实施OOP,整洁和可维护的应用程序。
其他例子想象一辆车。
所有引擎和计算的东西都在你无法看到它的盒子内,你可以称之为模型。 控制器的东西就在你面前,所以你可以控制它。的控制器强>
希望如果任何人可以为此答案添加更多选项供其他人学习,这会有所帮助。
答案 2 :(得分:0)
一般来说,你的老板是正确的,因为目标是胖模型 - 瘦的控制器。这样做的原因是,如果在你的工作中他们正在进行单元测试(我希望他们是这样),这会使你的事情变得更加容易。在控制器中进行测试是后方的痛苦。
尽管如此,虽然控制器中的代码可以忽略不计,但不知道他所要求的是否是必要的&#34;确切地说,只是在技术上不符合当前标准(无论如何都会随时间变化)。如果你对他/她做出这样的批评感到困扰,尽量不要这样做。像这样的事情并不是一成不变的,而是大部分都要解释。