CakePHP 2.0表单验证

时间:2012-09-01 01:18:06

标签: php cakephp cakephp-2.0

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

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

2 个答案:

答案 0 :(得分:2)

看起来你并不像CakePHP那样需要任何“必需”的字段。

就CakePHP而言,“必需”意味着必须在保存模型的任何时候提交该字段。它与字段中是否有内容无关(即'notEmpty')。

所以 - 对于你的情况,你可能只是为每个字段设置正常的数据验证规则(即minLength,notEmpty,有效的电子邮件......等等,对两个页面都很好。任何数据都是提交必须通过验证 - 如果没有提交,没什么大不了的。

您可以随时设置:

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

如果您需要验证数据中是否存在该字段以进行保存或更新...但我个人从未发现必要并创建了许多您所描述的页面。

根据书籍[here]

  

required => true与验证规则的含义不同   不是空的()。 required => true表示数组键必须是   现在 - 这并不意味着它必须具有价值。因此验证   如果该字段不在数据集中,则会失败,但可能会失败   如果提交的值为空(''),则(取决于规则)成功。

答案 1 :(得分:0)

您可以使用'on',如下所示:

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

或者您可以尝试在控制器中取消验证,但第一个是更清洁。