Если ваш код формы / представления написан правильно, вы сможете уйти с помощью $this->Report->saveAll($this->data['Report']);
.
Просмотр исходного кода HTML для вашей формы. Значения атрибутов имени для входных тегов должны быть примерно такими, как data[Report][0][id]
, data[Report][0][user_id]
и т. Д. Вторая запись должна иметь поля, похожие на data[Report][1][id]
, data[Report][2][user_id]
и т. Д.
Когда он получит POST, он автоматически импортирует в правильную структуру массива в $ this-> data.
Если эта форма всегда будет создавать новые записи, то оставьте поля data[Report][][id]
(или оставьте их пустыми), и saveAll создаст новые записи.
Обновление для обработки первого комментария.
Непонятно, хотите ли вы присвоить $ data после или до того, как контроллер сохранит все эти скрытые данные. Давайте разберемся с обеими частями; во-первых, сохранить.
Итак, ваш собственный ответ почти правильно подходит для создания данных.
$count = 27;
$v = 0;
$data = array('Report' => array());
do {
$data['Report'][] = array('reports_id' => $id, 'area' => $v);
$v++;
} while ($v < $count);
// save report rows to database
$this->Report->saveAll($data['Report']);
Итак, это подготавливает структуру данных, так же, как вы делали в исходном вопросе и в своем ответе. Однако мы используем saveAll () , чтобы создать их все за один раз.
Следующая часть - извлечь сохраненные данные и поместить их в $ this-> data, чтобы вы могли использовать их в форме, которую ваши пользователи увидят после перенаправления, согласно вашему комментарию. Вам нужно что-то подобное в контроллере.
$reports = $this->Report->find('all', array(
'conditions' => array(
'reports_id' => $id
)
));
// merge this in with existing data
$this->data = Set::merge($reports, $this->data);
Предполагается, что $ id находится в URL как часть перенаправления. И именно так вы назначаете эти данные в $ this-> data, чтобы вы могли использовать их в своей форме.
И в вашей форме вы можете ссылаться на несколько полей следующим образом:
$this->Form->create('Report');
foreach ($data['Report'] as $i => $report) {
$this->Form->input('Report.'.$i.'.id');
$this->Form->input('Report.'.$i.'.user_id');
$this->Form->input('Report.'.$i.'.reports_id');
$this->Form->input('Report.'.$i.'.area_id');
$this->Form->input('Report.'.$i.'.area');
$this->Form->input('Report.'.$i.'.count');
$this->Form->input('Report.'.$i.'.comment');
}
$this->Form->end('Submit);
Вы можете узнать больше о формах для нескольких записей в руководстве CakePHP .