【问题标题】:Cakephp Best PracticesCakephp 最佳实践
【发布时间】:2013-10-16 21:18:39
【问题描述】:

我有一个关于 CakePHP 最佳实践的问题!

让我们想象一下以下情况:

在收据模型中,我有代码:

public function beforeValidate()
    {
        $this->data[$this->name]["client_id"] = CakeSession::read("Auth.User.id");
        $this->data[$this->name]["date"] = date('Y-m-d H:i:s');

        $receipt    = $this->data[$this->name]["receipt"];
        $cod_filial     = substr($receipt, 0, 3);
        $qtdade_cupom   = substr($receipt, 12, 2);
        $tipo_pagamento = substr($receipt, 14, 1);

        $this->data[$this->name]["cod"] = $cod_filial;
        $this->data[$this->name]["quantity"] = $qtdade_cupom;
        $this->data[$this->name]["payment_type"] = $tipo_pagamento;
        $this->data[$this->name]["is_valid"] = null;


        return true;
    }

我必须对变量 $qtdade_cupom、$cod_filial 进行大量验证,例如检查有效数字。

我在哪里做数学??

我在模型中创建了一个方法,比如

public function checkDigits()

我创建一个行为来执行此操作?

其他解决方案??

【问题讨论】:

  • 不要使用$this->name,它是$this->alias

标签: php cakephp cakephp-2.0 cakephp-model


【解决方案1】:

答案很简单:取决于您的需求。

如果这个数学被多个模型使用(不仅仅是这个模型),使用一种行为。

如果它只被这个特定的模型使用,把它作为模型方法保存在里面。

如果数学涉及许多其他工具和类,最好将这个数学提取到 /Lib 中一个可测试的库中。

但正如我所说,这取决于它到底需要和用于什么。

【讨论】:

  • 是的,你明白我的意思。谢谢你。如果我有我的代码,许多计算将有很多行使代码变脏。这是我的担忧
【解决方案2】:

CakePHP 内置了模型验证。

您还可以定义自定义验证方法。

更多信息: http://book.cakephp.org/2.0/en/models/data-validation.html#custom-validation-rules

希望这会有所帮助。

【讨论】:

  • 谢谢。我知道 Cake 自定义验证。在我的情况下不应该使用它,因为我必须检查数字验证并生成另一个数字并将其保存在其他表中。
  • 您可以通过自定义验证来做到这一点。
猜你喜欢
  • 2013-04-06
  • 2011-03-10
  • 2016-11-05
  • 2018-08-29
  • 2016-07-06
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 2014-12-21
相关资源
最近更新 更多