我想使用模型验证。 我可以清楚地解释一下在我看来,有一个名为“register.ctp”的文件。另外我有两个表一个是用户,另一个是配置文件,根据cakephp概念我也有两个模型,即用户模型(User.php)和配置文件模型(Profile.php)。 我的register.ctp包含以下字段
姓名,电子邮件,地址和电话都是强制性的 - 当我提交时,姓名和电子邮件将存储在用户表和地址中,电话将存储在个人资料表中
当我使用模型验证时,我尝试使用以下代码,该代码仅适用于名称和电子邮件但不适用于其他字段。
这是我在用户模型(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'
),
);
由于
答案 0 :(得分: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();
答案 1 :(得分:0)
请参阅这两种模型方法。
同样请参阅Model::saveAll()。它可用于验证整组记录和相关记录。这只会验证但不能保存reocrds:
$this->saveAll($data, array('validate' => 'only'));
我建议您阅读有关saveAll()的整个文档,以了解它的工作原理以及仅在验证数据时将返回的内容。
无需像noslone建议的那样逐个手动验证每个模型。上面的单行也可以。