我有一个简单的创建新帐户页面,其中包含用户名、电子邮件、确认电子邮件、密码和确认密码字段。所有验证都在用户模型下,目前所有输入字段都是必需的。
用户登录后,会出现一个设置页面,他们可以在其中更新电子邮件和密码。输入字段是电子邮件、确认电子邮件、密码和确认密码(与创建帐户页面没有用户名字段的输入字段相同)。但是,我希望验证在设置下有所不同,并且不需要任何字段。在不影响创建新帐户页面的验证规则的情况下,我将如何解决此问题?非常感谢您的帮助。
我有一个简单的创建新帐户页面,其中包含用户名、电子邮件、确认电子邮件、密码和确认密码字段。所有验证都在用户模型下,目前所有输入字段都是必需的。
用户登录后,会出现一个设置页面,他们可以在其中更新电子邮件和密码。输入字段是电子邮件、确认电子邮件、密码和确认密码(与创建帐户页面没有用户名字段的输入字段相同)。但是,我希望验证在设置下有所不同,并且不需要任何字段。在不影响创建新帐户页面的验证规则的情况下,我将如何解决此问题?非常感谢您的帮助。
正如 CakePHP 所认为的那样,您似乎并不需要任何“必需”字段。
就 CakePHP 而言,“必需”意味着该字段必须在每次保存该模型时提交。它与字段中是否有内容(即'notEmpty')无关。
所以 - 对于你的情况,你可能只是为每个字段设置正常的数据验证规则(即 minLength、notEmpty、有效的电子邮件......等等等等,并且对两个页面都很好。提交的任何数据都必须通过验证——如果没有提交,没什么大不了的。
你总是可以设置:
'required' => 'create' //or update
if you need to verify that that field exists in the data for a save or update... but I've personally never found that necessary and have created many pages like you've described.
Per the book [here]:
required => true does not mean the same as the validation rule notEmpty(). required => true indicates that the array key must be present - it does not mean it must have a value. Therefore validation will fail if the field is not present in the dataset, but may (depending on the rule) succeed if the value submitted is empty (‘’).
您可以使用'on'
,如下所示:
array(
'rule' => 'required',
'on' => 'create' // or 'update'
)
或者您可以尝试在控制器中取消设置验证,但第一个更干净。