对于多个模型的CakePHP一种形式没有正确验证
问题描述:
所以我有两个模型,即Company
和User
。这里有关系:对于多个模型的CakePHP一种形式没有正确验证
公司:
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;
}
}
下面是一些用户模型的验证规则,有两种不同的验证类型REST服务和Web客户端,所以这是仅适用于Web客户端。注意:它创建适用于单个用户都好/编辑:
$这个 - >验证=阵列(
'name'=>array(
'Insert user name'=>array(
'rule'=>'notEmpty',
'message'=>'Insert user name',
'last'=>false
)
)
答
用来验证:
假设你正在从节约“公司数据控制器”。
if($this->Company->saveAll(array('validate'=>only)){
//your save logic here
} else {
//here form has some validation errors.
debug($this->Company->validationErrors);
}
试试这个任何答复....
同样可以用做 “用户”
if($this->User->saveAll(array('validate'=>only)){
//your save logic here
} else {
//here form has some validation errors.
debug($this->User->validationErrors);
}
而且
在形式使用这种用于用户数据:
echo $this->Form->input('User.name', array('label'=>__('Name*')));
答
saveAll
是saveMany
和saveAssociated
的包装。所以你不必调用这两种方法。
然后,根据蛋糕的doc,取消设置验证你应该使用的语法:$this->Model->AssociatedModel->validate...
应该是这样的:
public function registerCompany($data){
unset($this->Company->User->validate['company_id']);
if($this->Company->saveAssociated($this->request->data)){
return true;
}else{
return false;
}
}
你怎么样声明在模型验证?你能告诉我们这个代码吗? – ylerjen 2014-09-29 12:27:28
亲爱的@ Miam84,我刚刚用模型的逻辑更新了问题。提前致谢。 – Domas 2014-09-29 12:43:48
这是你的控制器的代码(也是有用的)。我的意思是'Model/User.php'文件中'User model'的代码。在那里你应该设置$ validate数组来验证你的模型 – ylerjen 2014-09-29 13:30:17