「staff_code」の主キーを持つモデルがあります
以下のような顧客検証ルールがあります。
public $validate = array(
'staff_code' => array(
'unique' => array(
'rule' => 'isUnique',
'message' => 'This Staff Code already exists',
'last' => true
),
'sc_required' => array(
'rule' => 'notEmpty',
'message' => 'The Staff Code must be specified',
))
);
フィールドが一意でない場合、検証エラーは表示されません
誰かがこのエラーを克服しましたか? ユーザーが入力した主キーに関連していると思います。
別のソフトウェアで使用されているため、スキーマをそのままにしておく必要があり、これが機能する方法を変更するのは本当に悪夢です。
必要かどうかはわかりませんが、私の見解は次のとおりです。
<?php
echo $this->Form->create('Staff');
echo $this->Form->inputs(array(
'staff_code' => array('type' => 'text', 'autocomplete' => 'off'),
'login_name' => array('type' => 'text', 'autocomplete' => 'off'),
'person_name' => array('type' => 'text', 'autocomplete' => 'off'),
'password',
'_allowed_to_do_po',
'is_active'
));
echo $this->Form->input('role', array('options' =>
array('user' => 'user', 'admin' => 'admin'), 'empty' => false, 'default'=>'user'));
echo $this->Form->end(array(
'label' => 'Save',
'class' => 'btn'
));
?>
...そして Staff コントローラからの私のカスタム保存関数:
function emSave($data) {
if (!$this->find('first', array('conditions' => array('staff_code' => $data['Staff']['staff_code'])))) {
if ($this->save($data)) {
return true;
} else {
return false;
}
} else {
return false;
}
}
注意: エラー メッセージは、主キーではない他のフィールドでは問題なく機能します。