在 CakePHP 中保存多行表格

Posted

技术标签:

【中文标题】在 CakePHP 中保存多行表格【英文标题】:Multiple rows with forms to save in CakePHP 【发布时间】:2013-12-06 00:17:14 【问题描述】:

我目前正在开发一个投标系统,我一直在保存中标号码和金额。顺便说一下,这是 cakephp 2.4。当我在编辑值后提交投标时,它将(取决于解决方案)创建一个没有信息的新记录,或者只是刷新而不做任何事情。我尝试了几种不同的方法将 id 添加到表单中,但这似乎没有帮助(这是最常见的错误)。

我觉得我真的错过了一些东西,而且我对蛋糕还是很陌生,所以我不确定它是什么。

视图中发生了什么:我为我的表格的每个吐出行进行了分页。每一行都是这样的

<tr>
  <td><a href="/kBid/bids/assign/2001">2001</a> </td>
  <td>Wee love basket </td>
  <form action="/kBid/bids" id="BidIndexForm" method="post" accept-charset="utf-8">
  <div style="display:none;"><input type="hidden" name="_method" value="POST"/></div>
  <td><div class="input number"><input name="data[Bid][winningBidder]" value="0" type="number" id="BidWinningBidder"/></div> </td>
  <td><div class="input number"><input name="data[Bid][winningAmount]" value="0" type="number" id="BidWinningAmount"/></div> </td>
  <td>
  <input type="hidden" name="data[Bid][id]" value="2001" id="BidId"/><button class="button" style="color: #FFF;" type="submit">Save</button>                </td>
</tr>

还有我的控制器来保存/查看项目:

public function index($id = null) 
    if ($this->request->is('post'))
        $this->Bid->id = $this->request->data['Bid']['id'];
        if($this->Bid->save($this->request->data))
            $this->Session->setFlash('Bid assigned!');
            return $this->redirect(array('action' => 'index'));
        
    

    $this->Paginator->settings = $this->paginate;
    $this->Bid->recursive = 0;
    $this->set('bids', $this->paginate());

我已经尝试了大约 2 个小时,现在有很多“解决方案”,但到目前为止都没有奏效。一页上有多个表单是否有问题?当我查看源代码时,它们中的每一个都有单独的 ID,所以只要它们被传递,我就看不到问题。

除了我试图在视图末尾转储 sql 但它只给我它用来选择要显示的行的 sql。

真的很感谢任何建议,或者我是否应该以不同的方式来做这件事?谢谢!

【问题讨论】:

【参考方案1】:

请仔细检查您的代码。看一眼你的代码。 :

您的表单标签未关闭。 (使用表单助手来创建表单,而不是对 html 进行硬编码)

【讨论】:

感谢您的观看!当我使用表单元素并显示它们时,$this-&gt;Form-&gt;end(); 不在循环中。我非常感谢您的帮助,现在它正在工作并且可以通过该修复来完成。

以上是关于在 CakePHP 中保存多行表格的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP - 当某些字段为空时,防止模型数据保存在 saveMany 调用中

在 CakePHP 中使用 HABTM 保存 hasOne

Cakephp 多个输入字段

cakephp 模型保存浮点值的问题

CakePHP saveAll() 函数问题

根据在 cakephp 中选择的值向数据库添加多行