【问题标题】:CakePhp form validation when having two models on two different database在两个不同的数据库上有两个模型时的 CakePhp 表单验证
【发布时间】:2011-09-29 06:18:57
【问题描述】:

我有一个不常见的问题来进行表单验证。

首先让我解释一下问题的一部分:我正在做一个 cakePhp 网站,该网站将用于向客户销售产品。为此,我们有两个数据库:一个数据库(数据库 A)与产品、客户参考、账单(由 ERP 提供)相关,另一个数据库(数据库 B)与网站必须为网站存储的信息相关(用户密码、购物车内容、产品上的 cmets...)。

要在我们的网站上注册一位用户,我必须: 在数据库A中创建一个“地址” 在数据库 A 中创建一个“客户” 在数据库 B 中创建一个“用户”。

这只能是一个动作。

我在用户控制器上,所以验证“用户”的每个字段没有问题,但是如何让这个表单验证我在客户和地址模型中的所有约束?

问题是因为用户和客户不在同一个数据库中,我不能(实际上我不确定,但这似乎是逻辑,因为自动左连接)声明 $belongsTo以及用户和客户之间的 $hasOne 关系。

那么我该如何检查这些约束呢? 非常感谢

【问题讨论】:

    标签: cakephp model validation multiple-databases


    【解决方案1】:

    您可以手动验证字段。

    $this->Customer->set( $this->data );
    $this->Address->set( $this->data );
    
    if( $this->User->validates() && $this->Customer->validates() && $this->Address->validates() ) {
        // save data
    }
    

    【讨论】:

    • 好的,但是在表格中,我应该选择哪个?对于用户,确定:'User.username' 对于客户:'User.Customer.Language' 或 'Customer.Language' 对于地址:'User.Customer.Address.Name' 或 'Customer.Address.Name' 或 'Address.名字'谢谢你
    • 如果模型之间没有关系,则无法链接模型。只需使用Model.field 即可。
    • 好的,这对我来说很棒。最后一个问题:我的模型似乎已经过验证,但只显示与当前模型(控制器)相关的异常。如何也显示其他字段?
    • 忘了这个,问题似乎是因为如果我的用户无效,我没有检查客户。如果我执行我的三个验证,我是否会出现所有错误,或者每个都会删除之前的验证错误?
    • 表单是什么,因为它没有看到所有必需的模型字段
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 2013-06-15
    • 2019-03-29
    相关资源
    最近更新 更多