猿问

CakePHP3 合并添加和编辑动作

在我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(),当有行时会出错。


有任何想法吗?


森栏
浏览 121回答 1
1回答

慕的地10843

你可能不应该这样做:$herdimport = $this->Herdimports->newEntity();如果要添加/编辑多个项目,$herdimport则应始终是查询或实体列表,而不是单个实体。如果潜在的目标/问题是在没有记录的情况下有一组初始输入,那么您可以执行以下操作:$entity = $this->Herdimports->newEntity();$entity->herd_id = $herd_id;$herdimport = [$entity];即简单地将初始实体包装在一个数组中(并确保填充外键字段)。
随时随地看视频慕课网APP
我要回答