【问题标题】:associated models and validating相关模型和验证
【发布时间】:2013-01-23 15:12:05
【问题描述】:

每 3 个人在我的应用中创建 1 个页面。所以每个PagehasManyUser

我已经定义了一些检查用户信息的验证规则。 (如电子邮件、电话和邮政编码检查器。)但每个页面(所有者)只需要一个电子邮件和电话号码。所以只有第一个用户需要电子邮件和电话。 (其他用户不必填写。第一个用户必须这样做。)

所以,我必须在验证第一个用户数据后删除一些验证规则。但我不知道如何使用saveAll (saveAssociated) 方法。

【问题讨论】:

    标签: cakephp associations model-associations cakephp-2.2


    【解决方案1】:

    您可以通过添加来跳过特定字段的验证

    unset($this->User->validate['field_name']);

    validates()save() 调用之前。

    【讨论】:

    • 我知道,而且我用过很多次。但是这里我们没有save 方法。这是saveAll
    • 如果您使字段无效,则调用哪种方法来保存数据都没有关系。该字段将不会被验证,因为(该字段的)验证规则不再存在。所以这也适用于saveAll
    • saveAll,一次验证并保存所有用户数据。所以我不能在验证第一个用户后取消设置验证规则。
    • 在这种情况下,您应该在保存之前验证数据,然后使用$this->User->saveAll($this->request->data, array('validate' => false));
    【解决方案2】:

    我必须通过将第一个用户电子邮件和电话号码复制给其他用户来管理它(并设置一些变量以保留默认电子邮件和电话)。然后,验证请求数据。然后恢复其他 2 个用户的默认值。

    欢迎提出其他建议。

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 2012-08-07
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      • 2011-11-15
      • 2015-10-27
      相关资源
      最近更新 更多