Validation 使用$model时使用CakePHP->;save()验证规则并跳过其他规则
我使用的是CakePHP 2.0,我有一个模型,我对它进行了如下验证:Validation 使用$model时使用CakePHP->;save()验证规则并跳过其他规则,validation,cakephp,cakephp-2.0,Validation,Cakephp,Cakephp 2.0,我使用的是CakePHP 2.0,我有一个模型,我对它进行了如下验证: var $validate = array( 'title' => array( 'unique_rule'=>array( 'rule' => 'isUnique', 'on' => 'create', 'message' => 'This title has already been taken
var $validate = array(
'title' => array(
'unique_rule'=>array(
'rule' => 'isUnique',
'on' => 'create',
'message' => 'This title has already been taken.'
),
'required_rule'=>array(
'required' => true,
'allowEmpty' => false,
'message' => 'The title field is required.'
)
)
);
,在控制器中,我有一个编辑操作,我使用$model->save()保存来自$this->request->data的日期,但它没有通过isUnique验证规则,尽管它不是新记录插入。
有没有办法指定它是现有记录,而不是新记录?如果我答对了问题,您必须在调用
$model->save()之前设置模型的ID代码>因此cakephp知道这是一个更新
见:
创建或更新由模型的id字段控制。如果设置了$model->id,则会更新具有此主键的记录。否则会创建新记录:
您的验证数组错误您没有为'required\u rule'
设置规则,该规则可能会触发isUnique
错误消息
var $validate = array(
'title' => array(
'unique_rule'=>array(
'rule' => 'isUnique',
'on' => 'create',
'message' => 'This title has already been taken.',
'last' => true
),
'required_rule'=>array(
'rule' => array('notEmpty'),
'message' => 'The title field is required.'
)
)
);
还请记住,使用required=>true
不会对实际数据进行结果检查,它只希望字段出现在数据数组中,“”也被视为存在控制器的编辑函数应以$id作为参数(函数编辑($id=null)
,该函数的第一行应该是$this->YourModelName->id=$id;
;
Cake应该执行MySQL更新,而不是插入。MySQL日志是否显示请求id的更新
?它从一开始就已经完成了,它不会更新插入,但会触发“是唯一的”验证规则,尽管指定了“on”=>“create”在model validation rule.btw中:您的顺序是错误的,您应该使用last=>true。如果没有任何输入,则无需调用数据库进行唯一检查
var $validate = array(
'title' => array(
'unique_rule'=>array(
'rule' => 'isUnique',
'on' => 'create',
'message' => 'This title has already been taken.',
'last' => true
),
'required_rule'=>array(
'rule' => array('notEmpty'),
'message' => 'The title field is required.'
)
)
);