CakePHP-在同一页面内保存同一模型的多个记录

时间:2014-03-17 13:03:53

标签: jquery ajax cakephp

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

首先,我不确定多少级别的优雅'现在使用js / ajax(很容易不使用表单)需要实现降级。但是为了js-disabled浏览器/用户,我认为它的'明智地使用表格。你的摄入量是多少?

然而,主要问题是下面的问题。 我正在尝试使用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->BloodTarget->save($this->request->data['BloodTarget']))

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

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

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

对于我的生活,有谁能请确定我的代码中有什么问题?我错过了什么? 谢谢你!

1 个答案:

答案 0 :(得分:0)

血腥的东西伴侣;)

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

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
祝你好运!

相关问题