首页 文章

如何验证cakephp中的多个模型

提问于
浏览
0

我想使用模型验证 . 我可以清楚地解释一下在我看来,有一个名为“register.ctp”的文件 . 另外我有两个表一个是用户,另一个是配置文件,根据cakephp概念我也有两个模型,即用户模型(User.php)和配置文件模型(Profile.php) . 我的register.ctp包含以下字段

姓名,电子邮件,地址和电话都是强制性的 - 当我提交时,姓名和电子邮件将存储在用户表和地址中,电话将存储在 Profiles 表中

当我使用模型验证时,我已尝试使用以下代码,该代码仅适用于名称和电子邮件,但不适用于其他字段 .

这是我在用户模型中进行模型验证的代码(User.php)

public $validate = array(
     'email' => array(
        'blank' => array(
            'rule' => 'notEmpty',
            'message' => 'Please enter Email.'
        )
    ),

    'name' => array(
        'rule'    => 'notEmpty',
        'message' => 'Please enter Name'
    ),
    'address' => array(
        'rule'    => 'notEmpty',
        'message' => 'Please enter Address'
    ),
    'phone' => array(
        'rule'    => 'notEmpty',
        'message' => 'Please enter Phone'
    ),

);

谢谢

2 回答

  • 0

    您需要为每个模型设置验证 .

    所以在 User.php

    public $validate = array(
         'email' => array(
            'blank' => array(
                'rule' => 'notEmpty',
                'message' => 'Please enter Email.'
            )
        ),
        'name' => array(
            'rule'    => 'notEmpty',
            'message' => 'Please enter Name'
        )
    );
    

    并在 Profile.php

    public $validate = array(
        'address' => array(
            'rule'    => 'notEmpty',
            'message' => 'Please enter Address'
        ),
        'phone' => array(
            'rule'    => 'notEmpty',
            'message' => 'Please enter Phone'
        )
    );
    

    您需要在Controller中验证两个模型:

    $this->User->set($this->data());
    $valid = $this->User->validates();
    
    $this->Profile->set($this->data);
    $valid = $valid && $this->Profile->validates();
    
  • 0

    请参阅这两种模型方法 .

    另见Model::saveAll() . 它可用于验证整组记录和相关记录 . 这只会验证但不保存reocrds:

    $this->saveAll($data, array('validate' => 'only'));
    

    我建议您阅读有关saveAll()的整个文档,以了解它的工作原理以及仅在验证数据时将返回的内容 .

    无需像noslone建议的那样逐个手动验证每个模型 . 上面的单行也可以 .

相关问题