我有一个主键为“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;
}
}
注意:错误消息适用于我的其他没有主键的字段。