CakePHP - создать форму, которая редактирует несколько строк одной модели - PullRequest
4 голосов
/ 12 сентября 2011

Я пытаюсь создать форму, состоящую из субъектов, которые принадлежат субъектным группам.Визуально предметы отображаются на странице под заголовками каждой предметной группы.Вы сможете редактировать название тематической группы или отдельного предмета.

Если бы я дал вам пример 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. Как мне построить форму с помощью FormHelper Cake, которая позволит мне обновлять несколько строк, как это?

  2. Как мне затем проверять и обновлять модели SubjectGroup и Subject?

  3. Как мне обработать много экземпляров каждой модели (предмет 1, предмет 2 и т. Д.)?

Ответы [ 2 ]

8 голосов
/ 15 сентября 2011

См. Документацию для Сохранение данных связанной модели (в частности, числовой синтаксис, использованный в примере "Company hasMany Account").Вы должны быть в состоянии достичь этого, циклически перебирая свои данные:

$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 голосов
/ 15 сентября 2011
<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();
   }
   ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...