たとえば、フィールドを持ついくつかのモデルがname
ありuid
ますが、一部のモデルにはありません。これらのフィールドを持つすべてのモデルで次のルールを使用する必要がありますが、次のコード ブロックを各モデルに追加したくありません。
public $validate = array(
'name' => array(
array(
'rule' => array('between', 1, 25),
'message' => 'Name must contain %d to %d characters',
'required' => true
),
array(
'rule' => array('custom', AppModel::REGEX_NAME),
'message' => 'Name contains invalid characters.'
)
),
'uid' => array(
'rule' => 'uuid',
'message' => 'uid is not valid.',
'required' => true
),
);
AppModel
を設定してルールを追加することを検討しましたpublic $validate
。これにより、次の問題が発生します。
- これらのフィールドを持たないモデルは常に検証に失敗します。これ
required
は が true であるためです。 - モデルに設定した場合
public $validate
、AppModel からルールを継承しません。
これはオンザフライで検証を追加することで処理できると確信していますが(私は AppModel で beforeValidate() を考えています)、他の人がこれをどのように処理しているか知りたいです。
誰かがより良い方法を知っていますか?