为了账号安全,请及时绑定邮箱和手机立即绑定

CakePHP3 合并添加和编辑动作

CakePHP3 合并添加和编辑动作

PHP
森栏 2021-08-28 09:09:24
在我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];

即简单地将初始实体包装在一个数组中(并确保填充外键字段)。


查看完整回答
反对 回复 2021-08-28
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信