CakePHP - 创建一个表单,用于编辑同一模型的多行

Bad*_*sie 4 cakephp

我正在尝试构建一个由Subjects组成的表单,这些表单属于SubjectGroups.在视觉上,主题显示在每个主题组的标题下的页面上.您将能够编辑主题组或单个主题的名称.

如果我给你一个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" />

...
Run Code Online (Sandbox Code Playgroud)
  1. 如何使用Cake的FormHelper构建表单,这将允许我像这样更新多行?

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

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

dei*_*zel 8

请参阅保存相关模型数据的文档(特别是"公司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;
Run Code Online (Sandbox Code Playgroud)

至于储蓄,你就是这么做的$this->SubjectGroup->saveAll($this->data);.