Cake PHP自动形式和多个表格

Chr*_*len 2 forms validation cakephp

我有一个包含以下字段的表单:

  • 名字
  • 电子邮件地址

接下来是(最多)十个名称/电子邮件字段,就像这样

  • FRIENDNAME-1
  • friendEmail-1
  • FRIENDNAME-2
  • friendEmail-2 ......等

firstName,lastName和emailAddress字段将保存到'referrals'表中,但10个名称/电子邮件对将进入'friends'表,其中包含外键refferal_id.

通常我使用cakephp'automagic'表单,并在模型中设置我的验证,并执行$this->model->save();如果它失败我退回我的模型验证规则,错误消息得到spat回到我的表单html.没问题.

我怎么能为TWO表做这个呢?我认为自动化的东西不是可行的方法,但我觉得没有它会失去很多,例如模型中的验证和自定义错误消息.

有幸福的媒介吗?我很擅长蛋糕,所以我想知道是否有一种方法可以使用多个表格的自动化.

nei*_*kes 6

参见http://book.cakephp.org/view/84/Saving-Related-Model-Data-hasOne-hasMany-belongsTo

在推荐模型中创建关系:

var $hasMany = array('Friend');
Run Code Online (Sandbox Code Playgroud)

基本上,请确保正确命名字段,例如

echo $form->create('Referral');
echo $form->input('first_name');
echo $form->input('last_name');
echo $form->input('email');
foreach (range(0,9) as $index) {
  echo $form->input('Friend.'.$index.'.name');
  echo $form->input('Friend.'.$index.'.email');
}
echo $form->end();
Run Code Online (Sandbox Code Playgroud)

在您的推荐控制器中:

function add() {
   if(!empty($this->data)) {
      $this->Referral->saveAll($this->data, array('validate'=>'first'));
   }
}
Run Code Online (Sandbox Code Playgroud)