0

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()

また

これを行うために動作を作成しますか?

また

他の解決策??

4

2 に答える 2

1

CakePHP にはモデル検証が組み込まれています。

カスタム検証方法を定義することもできます。

詳細: http://book.cakephp.org/2.0/en/models/data-validation.html#custom-validation-rules

お役に立てれば。

于 2013-10-17T00:20:36.797 に答える
1

答えは簡単です。必要なものによって異なります。

この計算が複数のモデル (このモデルに固有のものだけでなく) で使用される場合は、ビヘイビアーを使用します。

この特定のモデルでのみ使用される場合は、内部のモデル メソッドとして保持します。

数学に他の多くのツールやクラスが含まれる場合は、この数学を /Lib の十分にテスト可能なライブラリに抽出するのが最善の方法かもしれません。

しかし、私が言ったように、正確にそれが必要であり、使用されるものに依存します.

于 2013-10-16T21:36:45.230 に答える