这是我的表单:我想确保至少填写其中一个名称/电子邮件对,因此我正在我的模型中处理自定义验证规则。
alt text http://files.getdropbox.com/u/240752/formfields.png
我原本以为这是一个强制要求使用名字/电子邮件对的简单案例,但如果有人填写第三个字段,那么这并不包括其他字段,并且省略了电子邮件。
此外,如果填写了相应的朋友字段,我只需要检查有效的电子邮件地址。
我是否过度思考这个?我认为我需要在规则之间进行某种互动,但我很难坚持。
答案 0 :(得分:1)
我会为此目的编写一个自定义验证方法:http://book.cakephp.org/view/150/Custom-Validation-Rules#Adding-your-own-Validation-Methods-152
答案 1 :(得分:0)
将验证逻辑放在beforeValidate回调中。
答案 2 :(得分:0)
您的字段是如何生成的?我假设您使用的是:
<?php echo $form->input('Friend.name'); ?> [html stuff] <?php echo $form->input('Friend.email'); ?>
由于在页面中多次执行此操作会产生重复的ID(例如,“FriendName
”将是<?php echo $form->input('Friend.name'); ?>
生成的每个字段的结果ID),您可能需要在生成它们时为每个字段名称添加一个数字,然后在控制器中循环$this->data['Friend']
并在找到它们时使有问题的字段无效(如果名称存在,但电子邮件不是,如您所说)。
我认为没有一种内置的蛋糕来处理这样的情况,但我以前错了!