CakePHP 3-创建新的验证程序
您好:我想创建一个新的验证数据。当我烘焙模型时,它会生成一个验证 UsersTable.php-我只发布了部分示例CakePHP 3-创建新的验证程序,php,validation,cakephp,cakephp-3.0,Php,Validation,Cakephp,Cakephp 3.0,您好:我想创建一个新的验证数据。当我烘焙模型时,它会生成一个验证 UsersTable.php-我只发布了部分示例 public function validationDefault(Validator $validator) { $validator ->add('id', 'valid', ['rule' => 'numeric']) ->allowEmpty('id', 'create');
public function validationDefault(Validator $validator)
{
$validator
->add('id', 'valid', ['rule' => 'numeric'])
->allowEmpty('id', 'create');
return $validator;
}
我会再创造一个。。在其中,我向另一个表单写入验证。。例如编辑
public function validationEditUser(Validator $validator){
...
}
这就是我所说的验证
<?= $this->Form->create($user,['context' => ['valitador' => 'validationEditUsers']]); ?>
现在,这个值,我用于我的表单用户/编辑
public function validationEditUsers(Validator $validator){
//Its empty
}
这就是我告诉表单上下文使用哪个验证器的方式
<?= $this->Form->create($user,['context' => ['valitador' => 'editUsers']]) ?>
发生的情况是消息密码低。。属于ValidationDefault在我的表单编辑中触发。。我认为使用上下文只需使用ValidationEdit用户进行验证。。为什么不会发生这种情况?验证程序命名约定
您不需要在表单中调用验证,只需要告诉表单上下文使用哪个验证器来检查必填字段。传递的名称应省略方法名称的验证部分,并以小写开头,因此在您的情况下是editUser
当指定在封送请求数据时使用哪个验证器时,同样的规则也适用
$Table->newEntity($this->reqeust->data, [
'validate' => 'editUser'
]);
继承验证规则
不,不涉及内在性,如果需要,你必须自己处理,通过调用必要的验证方法,按照
public function validationDefault(Validator $validator)
{
$validator
->add(/* ... */);
return $validator;
}
public function validationEditUser(Validator $validator)
{
$this
->validationDefault($validator)
->add(/* ... */);
return $validator;
}
这将使editUser验证程序在应用其他规则之前继承默认规则
更新
正如最初提到的,表单帮助器不做任何验证,它使用验证器只是检查哪些字段是必需的,然后设置适当的HTML元素属性。实际验证发生在编组请求数据时,form helper仅显示实体上存储的错误
请参考newEntity示例和上面的链接,以了解如何定义用于实际验证的验证器。另一方面,您的代码中有一个输入错误,它必须是validator,而不是valitador 所以任何为我创建的验证,我都省略了验证方法的名称?啊。。我进行了测试,但不起作用,因为有一些validationDefault的验证在我不想要的地方起作用@thiagomoraest函数validationDefault中的验证在我的表单User/Edit中工作。。好吗?@ThiagoMoraes对不起,我不明白,你到底想问什么吗?
$Table->newEntity($this->reqeust->data, [
'validate' => 'editUser'
]);
public function validationDefault(Validator $validator)
{
$validator
->add(/* ... */);
return $validator;
}
public function validationEditUser(Validator $validator)
{
$this
->validationDefault($validator)
->add(/* ... */);
return $validator;
}