2012-09-01 99 views
0

我有一个简单的用户名,电子邮件,确认电子邮件,密码和确认密码字段创建新的帐户页面。所有的验证都在用户模型下进行,目前所有的输入字段都是必需的。CakePHP 2.0表单验证

用户登录后,会有一个设置页面,供用户更新其电子邮件和密码。输入字段是电子邮件,确认电子邮件,密码和确认密码(与创建帐户页面的用户名字段相同的输入字段)。但是,我希望验证在不需要任何字段的设置下有所不同。如何在不影响创建新帐户页面的验证规则的情况下处理此问题?非常感谢您的帮助。

回答

2

似乎并不需要任何CakePHP认为它需要的字段。

就CakePHP而言,“必需的”意味着必须在每次保存模型时提交该字段。它与该领域是否有内容无关(这是'notEmpty')。

因此 - 对于您的情况,您可能只需为每个字段(即minLength,notEmpty,有效的电子邮件等等等等)设置正常的数据验证规则,并且对两个页面都适用。即提交了,必须通过验证 - 如果它不提交的,没什么大不了的

你总是可以设置:

'required' => 'create' //or update 

,如果你需要验证该字段的数据存在保存或更新。 ......但我个人从未发现过这种必要,并创造了许多像你所描述的页面。

每本书[here]

需要=>真并不意味着一样的验证规则 notEmpty()。 required => true表示数组键值必须为 - 这并不意味着它必须有值。因此,如果字段不存在于数据集中,则验证 将失败,但如果提交的值为空(''),则 (取决于规则)将成功。

+0

感谢您的回复,这绝对解决了我的问题。当我正在阅读文档时,我不知何故错过了它。你的回答非常简洁并且重要,再次感谢! – onlydrinktea

0

您可以使用'on',像这样:

array(
     'rule' => 'required', 
     'on' => 'create' // or 'update' 
) 

或者你可以在控制器尝试unseting验证,但首先是清洁。