2011-04-29 152 views
1

我在CakePHP中有一个表单来将信息保存到多个模型中。 我的第一个模型是“世界”,我没有问题,这些字段的验证是正确的,它被正确保存到数据库。 第二种模式是“国家”,我用的是这样的:关系元素的表单验证

echo $this->Form->input('Country.0.name'); 

这是正确保存到数据库中,但没有验证(如楼梯必填项),并没有AUTOMAGIC(内容的自动检测类型)。 第三个模型是“地区”,我使用相同的代码作为第二个,但没有验证,没有automagic和不存储...

有人可以帮忙吗?

谢谢 塞巴斯蒂安

+0

我想要做同样的事情,你找到答案了吗? – dccarmo 2011-07-26 18:51:42

回答

0

没有看到你的代码的其余部分,我猜测你是想多个国家在同一时间保存。该模型预计的数据来以特定格式:

$this->data['Model']['field']; 

什么你逝去的是:

$this->data['Model'][0]['field']; 

该模型不能解释它。解决这个问题的方法是在您收集数据并独立发送每个请求时构建一个foreach。

foreach($country as $field) { 
    $data['Country']['field'] = $field; 
    // add other fields that are required 

    if($this->Country->validates($data)) { 
     $this->Country->create(); 
     $this->Country->save($data); 
    } else { 
     // error handling 
    } 
} 

好运和快乐编码!

+0

Actualy,'$ this-> data ['Model'] [0] ['field'];'是您希望用hasMany关系保存相关模型数据时Cake等待的格式:[link](http:// book.cakephp.org/view/84/Saving-Related-Model-Data-hasOne-hasMany-belongsTo)。 – 2011-04-29 18:29:53

+0

我想要的是这样的: 'echo $ this-> Form-> input('World.name'); echo $ this-> Form-> input('Country.0.name'); echo $ this-> Form-> input('City.0.name');' 我在哪里使用'$ this-> World-> saveAll($ this-> data);'在控制器中保存一个新的世界,一个新的相关国家和一个新国家的新相关城市。 – 2011-04-29 18:35:02