2011-09-12 15 views
4

SubjectGroupsに属するSubjectで構成されるフォームを作成しようとしています。視覚的には、各サブジェクトグループの見出しの下に、サブジェクトがページに表示されます。あなたは、サブジェクトグループまたは個々のサブジェクトの名前を編集することができます。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のFormHelperのを使用してフォームを作成できますか?

  2. SubjectGroupモデルとSubjectモデルの両方を検証して更新するにはどうすればよいですか?

  3. 各モデル(対象1、対象2など)の多くのインスタンスをどのように処理しますか?

答えて

8

Saving Related Model Data(以下「当社hasManyのアカウント」の例で使用される、具体的数値構文)のドキュメントを参照してください。あなたのデータをループすることによって、これを達成することができる必要があります:保存するよう

$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(); 
    } 
    ?> 
関連する問題