0

Cakephp モデル内に次の関数があります。

/**
 *
 * saveMany without MeioUpload validations
 *
 */
public function saveManyDataOnly($data) {
    // since creating records without files, 
    // we need to detach the behavior
    $this->Behaviors->unload('MeioUpload.MeioUpload');

    $result = $this->saveMany($data);

    $this->Behaviors->load('MeioUpload.MeioUpload');        

    return $result;
}

save と saveAssociated にも同じことが必要です。

同じことで、save と saveAssociated をそれぞれ呼び出した後、Behavior をアンロードしてからリロードする必要があるということです。

beforeSave と afterSave のコールバックを使用したくありません。

追加した:

save メソッドと saveAssociated メソッドもオーバーライドしたくありません。

その理由は、save、saveAssociated、saveMany をビヘイビアーをロードして使用したい場合があるためです。

ビヘイビアを時々アンロードしたい主な理由は、save、saveAssociated、または saveMany を実行するときの特定の状況では、ビヘイビアによってトリガーされる検証とコールバックが望ましくないためです。

もちろん、単純にあと 2 つの関数を記述することもできますが、call_user_func を使用して、コードをさらに記述せずに同じ目的を達成する方法があるはずだと思います。

そのようなコードの書き方と新しい関数の呼び出し方を理解するのを手伝ってください。

4

1 に答える 1

0

'callbacks' => false を渡すことで、コールバック関数を一時的に無効にすることができます。

$this->save($data, array('validate' => true, 'callbacks' => false)); 
于 2012-10-10T02:16:36.493 に答える