在某些情况下,我只允许用户在编辑过程中增加价值。为此,我必须将请求中传递的新值与数据库中存储的实体中的旧值进行比较。
自定义验证功能接收两个参数:$check
是要验证的值,而数组$context
则包含提交表单中的其他值。
以CakePHP 3中所需的方式验证版本的最佳方法是什么?验证规则甚至有可能吗?
答案 0 :(得分:1)
您可以使用Application Rules
您必须在Table对象中创建一个新规则
假设您要检查的字段为priority
因此,在您的规则中,请对照存储在priority
中的原始值检查$entity->getOriginal('priority')
(刚刚更改)的值
public function buildRules(RulesChecker $rules)
{
// This rule is applied for update operations only
$rules->addUpdate(function ($entity, $options) {
if($entity->priority >= $entity->getOriginal('priority'))
return true;
else
return false;
},
'CheckPriority', // The name of the rule
[
'errorField' => 'priority', // the field you want
// to append the error message
'message' => 'You have to set a higher Priority' // the error message
]);
return $rules;
}