【发布时间】:2014-09-29 09:14:31
【问题描述】:
所以我有两个模型,即Company 和User。以下是关系:
公司:
public $hasMany = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'company_id',
)
用户:
public $belongsTo = array(
'Company' => array(
'className' => 'Company',
'foreignKey' => 'company_id',
)
并且有一个表单正在创建两个实例。问题是只有Company 字段正在验证,User 没有。即使仅用于创建或编辑 User 的验证规则工作完美。这是有问题的表格:
echo $this->Form->create('Company', array('action'=>'register'));?>
echo $this->Form->input('Company.name', array('label'=>__('Company name*')));
echo $this->Form->input('Company.address', array('label'=>__('Address*')));
echo $this->Form->input('Company.city', array('label'=>__('City*')));
echo $this->Form->input('User.0.name', array('label'=>__('Name*')));
echo $this->Form->input('User.0.email', array('label'=>__('Email*')));
echo $this->Form->input('User.0.email_confirmation', array('label'=>__('Email confirmation')));
echo $this->Form->end(array('label'=>'Save', 'onclick'=>'disableSubmit(this)'));
我完全了解validate only 选项,但我想知道使验证工作的正确方法是什么。
非常感谢任何帮助或指导。
根据要求,我也提供模型逻辑:
public function registerCompany($data){
unset($this->User->validate['company_id']);
if($this->saveAll($data, array('validate'=>'only'))){
if($this->saveAssociated($data)){
return true;
}
}else{
return false;
}
}
这里是一些User模型的验证规则,REST服务和Web客户端有两种不同的验证类型,所以这里只针对Web客户端。注意:它适用于单用户创建/编辑:
$this->validate = array(
'name'=>array(
'Insert user name'=>array(
'rule'=>'notEmpty',
'message'=>'Insert user name',
'last'=>false
)
)
【问题讨论】:
-
你是如何在你的模型中声明验证的?你也可以给我们看看这段代码吗?
-
亲爱的@Miam84,我刚刚用模型的逻辑更新了这个问题。提前非常感谢。
-
这是您的控制器的代码(也很有帮助)。我的意思是
User model在您的Model/User.php文件中的代码。在那里你应该设置 $validate 数组来验证你的模型 -
这是来自公司模型的代码。我刚刚用验证规则更新了这个问题,这对于单用户创建/编辑来说可以正常工作。
标签: cakephp cakephp-2.0 cakephp-model