【问题标题】:CakePHP- saving multiple records of t he same model, within same pageCakePHP-在同一页面内保存同一模型的多个记录
【发布时间】:2014-03-17 13:03:53
【问题描述】:

我有一个很奇怪的问题,我似乎无法弄清楚。我阅读了一些相关的问题,例如thisthis。但是,这些都使用正常提交,而我通过 ajax 请求执行保存。 (这让我想到了我的问题)。

首先,我不确定现在需要用 js/ajax 实现多少级别的“优雅”降级(很容易不使用表单)。但是为了禁用 js 的浏览器/用户,我认为使用表格是明智的。你对此有何看法?

然而,主要问题是以下问题。 我正在尝试使用 ajax 编辑记录,如下所示:

这是我的表格:

<?php echo $this->Form->create('BloodTarget',array('type' => 'post', 'default'=> false));?>
<?php $i = 0;?>

<?php foreach($targets as $target):?>

<?php echo $this->Form->input("BloodTarget.$i.cur_amount", array('type' => 'hidden', 'value' => $target['BloodTarget']['target_amount']));?>        
<?php echo $this->Form->input("BloodTarget.$i.id", array('type' => 'hidden', 'value' => $target['BloodTarget']['id']));?>                                                                                        
<?php echo $this->Form->input("BloodTarget.$i.target_amount",array('label' => false,'type' => 'number','value' => $target['BloodTarget']['target_amount']));?>

<?php $i++;?>
<?php endforeach;?>


<?php echo $this->Form->end();?>

这会产生类似的东西

<input type="hidden" name="data[BloodTarget][0][cur_amount]" value="26" id="BloodTarget0CurAmount">
<input type="hidden" name="data[BloodTarget][0][id]" value="1" id="BloodTarget0Id">
<div class="input number"><input name="data[BloodTarget][0][target_amount]" value="26"
 type="number" id="BloodTarget0TargetAmount"></div>

在我的 jquery 的 ajax 函数中,我序列化了表单

data: $("#BloodTargetRequestBloodForm").serializeArray()

像这样发送数据:

_method:POST
data[BloodTarget][blood_group_id]:1
data[BloodTarget][blood_component]:Whole Blood
data[BloodTarget][target_amount]:0

最后我保存了控制器中的数据 if($this-&gt;BloodTarget-&gt;save($this-&gt;request-&gt;data['BloodTarget']))

它确实保存了,但是,它创建了一个 ID 为零的新记录,而不是更新表单中的 3 条记录。

这里有什么问题?我也尝试在更新前设置ID,(但这不起作用)

$this-&gt;BloodTarget-&gt;id = $this-&gt;request-&gt;data['BloodTarget']['id'];

对于我的一生,谁能找出我的代码有什么问题?我错过了什么? 非常感谢!

【问题讨论】:

    标签: jquery ajax cakephp


    【解决方案1】:

    该死的伙伴;)

    也许我很愚蠢,但我认为这条规则:

    data[BloodTarget][blood_group_id]:1 // see blood_group_id
    

    不一样

    $this->BloodTarget->id = $this->request->data['BloodTarget']['id']; // see id
    

    所以也许你应该重命名

    data[BloodTarget][blood_group_id]:1
    

    到:

    data[BloodTarget][id]:1
    

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多