我希望你们cakephp专家可以在模型中回答这个问题2.1和数据验证。
Cake为您提供了一个“on”键,用于验证数组。我理解文档对此有何看法,但我的问题是,这两个项目有什么意义。
假设我有一个创建记录的验证规则。验证通过并创建记录。
然后,用户去编辑该记录并将其更改为不再通过该特定验证的内容。但是,由于我的验证集仅在create上运行,因此验证通过,并使用无效数据更新记录。在我看来,这将适用于任何创建/更新规则。如果用户想要绕过验证,只需创建一个有效的记录,然后进行编辑,使其现在无效。
是否有人可以帮助我了解何时使用更新和创建可能有意义?
答案 0 :(得分:11)
这对required
规则最有用。您应该将最低要求的某些字段设置为required
'on' => 'create'
。如果数据集中不存在这些字段并且无法创建记录,则此规则将失败,但允许您更新现有记录,而无需每次都传递该字段。
例如:
'email' => array(
'required' => array(
'on' => 'create',
'rule' => 'notEmpty',
'message' => 'Enter your email address',
'required' => true,
'last' => true
),
'notempty' => array(
'rule' => 'notEmpty',
'message' => 'Enter your email address',
'allowEmpty' => false,
'last' => true
),
'email' => array(
'rule' => 'email',
'message' => 'Not a valid email address',
'last' => true
)
)
答案 1 :(得分:1)
我发现它与个人资料图片合作非常有用。您需要在创建时上传一个(如果需要),但在更新时我可以保持为空=>不会对图片进行更新。
答案 2 :(得分:0)
'on' => null
将完成这项工作
编辑:
好吧,假设您有个人资料模型。
如果您有一个出生日期字段,您可能会使用一个规则来强制执行添加和编辑。
您还可以在表单中添加一个delete_picture复选框,用户应该选中该复选框以删除其个人资料图片。添加时,您没有个人资料图片,因此此字段仅在编辑时相关,然后您将使用on =>更新
假设您还有一个在创建对象时设置的组字段,但这意味着永远不会更改。然后你会使用on =>创建