Cakephp标准 - 在控制器中编写东西是否是正确的标准

时间:2014-03-18 07:45:52

标签: cakephp cakephp-2.0

对不起这个基本问题。以下是我的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 函数

3 个答案:

答案 0 :(得分:3)

在MVC中,业务规则转到模型。

但在您的示例中没有任何业务逻辑,因此您的代码在控制器中是正确的。

我建议使用cakephp控制台来创建控制器和模型,你可以自己搞定。

答案 1 :(得分:0)

通常任何具有验证或将数据保存到其他表的方法或任何额外的功能,使操作大于您需要考虑的一个页面(将功能分解为更小的功能),您可以根据需要设置此功能并访问模型或组件。我可以说胖模型概念和Component用于这种情况。

我认为方法不应该超过一页,这使得应用程序可以为下一个开发人员维护。

任何静态方法都可以在Utility中作为一个类,可以从控制器或视图中轻松调用。

请记住,Cake有很多模型行为,包含在所有模型中。比如beforeSave(),afterSave(),initiate(),delete()之前和之后......

最后,完全取决于您如何实施OOP,整洁和可维护的应用程序。

  

其他例子想象一辆车。

     

所有引擎和计算的东西都在你无法看到它的盒子内,你可以称之为模型。   控制器的东西就在你面前,所以你可以控制它。的控制器

希望如果任何人可以为此答案添加更多选项供其他人学习,这会有所帮助。

答案 2 :(得分:0)

一般来说,你的老板是正确的,因为目标是胖模型 - 瘦的控制器。这样做的原因是,如果在你的工作中他们正在进行单元测试(我希望他们是这样),这会使你的事情变得更加容易。在控制器中进行测试是后方的痛苦。

尽管如此,虽然控制器中的代码可以忽略不计,但不知道他所要求的是否是必要的&#34;确切地说,只是在技术上不符合当前标准(无论如何都会随时间变化)。如果你对他/她做出这样的批评感到困扰,尽量不要这样做。像这样的事情并不是一成不变的,而是大部分都要解释。