Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/forms/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation CakePHP中的自定义表单验证_Validation_Forms_Cakephp - Fatal编程技术网

Validation CakePHP中的自定义表单验证

Validation CakePHP中的自定义表单验证,validation,forms,cakephp,Validation,Forms,Cakephp,这是我的表单:我想确保至少填写了一个姓名/电子邮件对,因此我正在我的模型中处理一个自定义验证规则 我原本以为这将是一个简单的强制使用名字/电子邮件对的情况,但如果有人填写了第三个,并省略了电子邮件,则这不包括其他字段 此外,如果填写了相应的friend字段,我只需要检查有效的电子邮件地址 我是不是想得太多了?我想我需要在规则之间进行某种交互,但我被卡住了。在验证回调之前将验证逻辑放入其中。我将为此编写一个自定义验证方法:如何生成字段?我假设您使用的是如下内容: <?php echo $f

这是我的表单:我想确保至少填写了一个姓名/电子邮件对,因此我正在我的模型中处理一个自定义验证规则

我原本以为这将是一个简单的强制使用名字/电子邮件对的情况,但如果有人填写了第三个,并省略了电子邮件,则这不包括其他字段

此外,如果填写了相应的friend字段,我只需要检查有效的电子邮件地址


我是不是想得太多了?我想我需要在规则之间进行某种交互,但我被卡住了。

在验证回调之前将验证逻辑放入其中。

我将为此编写一个自定义验证方法:

如何生成字段?我假设您使用的是如下内容:

<?php echo $form->input('Friend.name'); ?> [html stuff] <?php echo $form->input('Friend.email'); ?>
[html素材]
由于在一个页面中多次这样做会产生重复的ID(例如,“
FriendName
”将是由
生成的每个字段的结果ID),因此您可能需要在生成字段名时为每个字段名添加一个数字,然后循环使用
$this->data['Friend']
在控制器中,并在发现违规字段时使其无效(如果名称存在,但电子邮件不存在,如您所说)


我不认为cake有一种内在的方式来处理这种情况,但我以前就错了

我可以看到在每次验证之前如何调用它,但我很难看到它如何帮助我的具体案例。嗨,Dhofset。我在发布之前通读了这一部分,但这只是演示了如何为一个特定字段编写规则。我需要1)检查朋友是否已填充2)如果已填充,则检查相应的电子邮件字段是否已填充且有效。是的,您为一个特定字段定义了规则,但是,使用$this->data,您可以访问验证方法中的所有数据。因此字段名只是用来触发验证方法。就Dhofset而言,您可以创建一个自定义验证方法来循环遍历$this->data['Friend']['name']数组,并执行必要的操作(return false表示缺少电子邮件等)。Hi inkedmn,下面是我生成字段的方式:正如您所看到的,它们是命名数据[Friend][0][姓名]等。