2011-09-12 46 views
4

我试图构建一个由属于SubjectGroups的主题组成的表单。在视觉上,主题显示在每个主题组的标题下的页面上。您将能够编辑主题组或单个主题的名称。CakePHP - 创建一个表单,编辑同一模型的多行

如果我给你的HTML的例子:

<div class="heading"> 
    <input type="text" value="Subject Group 1" /> 
</div> 
<input type="text" value="Subject 1" /> 
<input type="text" value="Subject 2" /> 
<input type="text" value="Subject 3" /> 

<div class="heading"> 
    <input type="text" value="Subject Group 2" /> 
</div> 
<input type="text" value="Subject 4" /> 
<input type="text" value="Subject 5" /> 
<input type="text" value="Subject 6" /> 

... 
  1. 如何建立使用Cake的表单助手,让我来更新这样多行的形式?

  2. 然后我如何验证和更新SubjectGroup和Subject模型?

  3. 如何处理每个模型(主题1,主题2等)的许多实例?

回答

8

参见(在“公司的hasMany帐户”实施例中使用专门的数字 - 语法)为Saving Related Model Data的文档。您应该能够通过循环您的数据来实现这一目标:

$i = $j = 0; 
foreach ($subjectGroups as $subjectGroup): 
    echo $this->Form->input('SubjectGroup.' . $i . '.id'); 
    echo $this->Form->input('SubjectGroup.' . $i . '.name'); 
    foreach ($subjectGroup['Subject'] as $subject): 
     echo $this->Form->input('Subject.' . $j . '.id'); 
     echo $this->Form->input('Subject.' . $j . '.name'); 
     $j++; 
    endforeach; 
    $i++; 
endforeach; 

至于储蓄,你只是做$this->SubjectGroup->saveAll($this->data);

0
<div class="heading"> 
<?php echo $form->input('SubjectGroup.subjectgroup',array('value'=>'subjectgroup 1'));?>  
</div> 
<?php echo $form->input('Subject.subject',array('value'=>'subject 1'));?> 
<?php echo $form->input('Subject.subject',array('value'=>'subject 2'));?> 
<?php echo $form->input('Subject.subject',array('value'=>'subject 3'));?> 
<div class="heading"> 
    <?php echo $form->input('SubjectGroup.subjectgroup',array('value'=>'subjectgroup 2'));?> 
</div> 
<?php echo $form->input('Subject.subject',array('value'=>'subject 4'));?> 
<?php echo $form->input('Subject.subject',array('value'=>'subject 5'));?> 
<?php echo $form->input('Subject.subject',array('value'=>'subject 6'));?> 
...... 
in controller 
<?php 
$subjctgroup = $this->data['SubjectGroup']; 
$subject = $this->data['Subject']; 
$this->User->set($user); 
$this->Contractor->set($subject); 
    if ($this->Subject->validates() && $this->SubjectGroup->validates()) 
    { 
    .......//your code for save the data 
    } 
    else 
    { 
     $this->validateErrors($this->Subject); 
     $this->validateErrors($this->SubjectGroup); 
     $this->render(); 
    } 
    ?> 
相关问题