首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP3合并、添加和编辑操作

CakePHP3合并、添加和编辑操作
EN

Stack Overflow用户
提问于 2019-06-18 11:58:03
回答 1查看 106关注 0票数 0

在我向系统添加herd之后,用户将被重定向到herdimports控制器,在那里他可以输入导入数据。

我希望在一个动作和视图中添加和编辑表单。

在控制器中,它的工作原理是:

代码语言:javascript
复制
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'));
}

在视图中,我有以下代码:

代码语言:javascript
复制
<?= $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>

</fieldset>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>

当我有那群人的参赛作品的时候,效果就很好了。但是,如果现在还没有条目(添加大小写),那么foreach就会被忽略。

如果有行或没有行,如何签入视图。我尝试过$herdimport->count(),但是当没有行时会产生错误。

还尝试了$herdimport->isNew(),它在有行时会出现错误。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-18 13:00:03

你也许不该这么做:

代码语言:javascript
复制
$herdimport = $this->Herdimports->newEntity();

如果要添加/编辑多个项,则$herdimport应该始终是查询或实体列表,而不是单个实体。

如果根本的目标/问题是在还没有记录的情况下拥有一组初始的输入,那么您可以这样做:

代码语言:javascript
复制
$entity = $this->Herdimports->newEntity();
$entity->herd_id = $herd_id;

$herdimport = [$entity];

ie只需将初始实体封装在数组中(并确保填充外键字段)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56648610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档