私のユーザーモデルに対して次の検証コードが処理されています。ユーザーを作成するとうまくいきますが、更新するときには機能しません。私は'on' => 'create'
を知っていますが、編集中にもルールを適用したいと思っています。ユーザーがユーザー名を変更できるようにしましたが、ユーザーが変更しているものがすでにDbになっている場合は、投稿を拒否する必要があります。ユーザー編集時のCakePHP isUnique検証
var $validate = array(
'username' => array(
'alphaNumeric' => array(
'rule' => 'alphaNumeric',
'message' => 'Usa letras ou numeros como o teu <<Usuario>>',
),
'between' => array(
'rule' => array('between' , 5, 15),
'message' => 'O <<Usuario>> tens que ter entre 5 a 15 letras/numeros',
),
'isUnique' => array(
'rule' => 'isUnique',
'message' => 'O <<Usuario>> que escolhestes ja foi utilizado. Escolhe um outro.'
)
)
);
ユーザーがカスタム検証ルールがに作成することができ、編集ページに到達するにはログインする必要があるため:送信されたユーザ名がすでにAuth->ユーザー(に属している場合
- チェック'id')とそれが正常に提出されている場合
- しかし、送信されるユーザー名がAuth-> User( 'username')と異なる場合は、他のユーザーがこのユーザー名を持っていないかどうかを確認する必要があります。
- Auth-> User()がNULLの場合、これは通常、新しいユーザーの作成時に適用されるため、isUniqueは通常通り処理されます。
おかげキーが検証ルールに指定されていない、またはnullに設定されている「オン」、ルールの作成と更新操作の両方に適用される場合
チェック
これはusersテーブルに対してのみ機能します。もっと一般的な解決策を用意していいですか? – geoidesic