在我herd向系统添加 a 后,用户被重定向到herdimports控制器,在那里他可以输入导入数据。我希望在一个操作和视图中添加和编辑表单。在控制器中它工作:public function edit($herd_id = null){ if($herd_id == null) { // log error $this->Flash->success(__('No herd was selected.')); return $this->redirect(['action' => 'index']); } $herdimport = $this->Herdimports->find('all')->where(['herd_id'=>$herd_id]); if($herdimport->count() == 0) { $herdimport = $this->Herdimports->newEntity(); } if ($this->request->is(['patch', 'post', 'put'])) { $herdimport = $this->Herdimports->patchEntities($herdimport, $this->request->getData()); $this->Herdimports->deleteAll(['herd_id'=>$herd_id]); if ($this->Herdimports->saveMany($herdimport)) { $this->Flash->success(__('The herdimport has been saved.')); return $this->redirect(['action' => 'index']); } $this->Flash->error(__('The herdimport could not be saved. Please, try again.')); } $this->set('herd_id', $herd_id); $this->set(compact('herdimport'));}在视图中,我有以下代码:<?= $this->Form->create($herdimport) ?> <fieldset> <legend><?= __('Edit Herdimport') ?></legend> <? $i = 0; ?> <? foreach ($herdimport as $h) : ?> <div class="repeat"> <?= $this->Form->hidden($i.'.herd_id'); ?> <?= $this->Form->control($i.'.num',['data-default'=>""]); ?> <?= $this->Form->control($i.'.date',['data-default'=>""]); ?> <?= $this->Form->control($i.'.origin',['data-default'=>""]);?> <?= $this->Form->control($i.'.weight',['data-default'=>""]); ?> <?= $this->Form->control($i.'.price',['data-default'=>""]); ?> </div> <? $i ++; ?> <? endforeach; ?> <button class="extra-row"><?=__('Extra row');?></button> <button class="delete-row" style="display: none;"><?=__('Delete row');?></button>当我有那个牛群的条目时,这很完美。但是如果现在还有条目(添加案例),则foreach忽略 。如果有行,我如何检查视图。我试过$herdimport->count(),但是当没有行时会出错。也试过$herdimport->isNew(),当有行时会出错。有任何想法吗?
1 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
你可能不应该这样做:
$herdimport = $this->Herdimports->newEntity();
如果要添加/编辑多个项目,$herdimport则应始终是查询或实体列表,而不是单个实体。
如果潜在的目标/问题是在没有记录的情况下有一组初始输入,那么您可以执行以下操作:
$entity = $this->Herdimports->newEntity();
$entity->herd_id = $herd_id;
$herdimport = [$entity];
即简单地将初始实体包装在一个数组中(并确保填充外键字段)。
- 1 回答
- 0 关注
- 120 浏览
添加回答
举报
0/150
提交
取消