CakePHP验证=> 'create',on => “更新”

时间:2012-03-21 00:33:59

标签: cakephp cakephp-2.0

我希望你们cakephp专家可以在模型中回答这个问题2.1和数据验证。

Cake为您提供了一个“on”键,用于验证数组。我理解文档对此有何看法,但我的问题是,这两个项目有什么意义。

假设我有一个创建记录的验证规则。验证通过并创建记录。

然后,用户去编辑该记录并将其更改为不再通过该特定验证的内容。但是,由于我的验证集仅在create上运行,因此验证通过,并使用无效数据更新记录。在我看来,这将适用于任何创建/更新规则。如果用户想要绕过验证,只需创建一个有效的记录,然后进行编辑,使其现在无效。

是否有人可以帮助我了解何时使用更新和创建可能有意义?

3 个答案:

答案 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 =>创建