我有一个简单的创建新帐户页面,其中包含用户名,电子邮件,确认电子邮件,密码和确认密码字段。所有验证都在用户模型下进行,目前所有输入字段都是必需的。
用户登录后,会有一个设置页面,可以更新自己的电子邮件和密码。输入字段是电子邮件,确认电子邮件,密码和确认密码(与创建帐户页面的用户名字段相同的输入字段)。但是,我希望验证在设置下不同,不需要任何字段。如何在不影响创建新帐户页面的验证规则的情况下解决此问题?非常感谢您的帮助。
答案 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'
)
或者您可以尝试在控制器中取消验证,但第一个是更清洁。