CakePHP:爆炸POST请求数据

时间:2012-08-06 18:02:51

标签: php cakephp-2.1

我有一个调用cakephp控制器方法的Javascript函数:

$.ajax({   
     type: "POST",
     url: 'http://localhost/cakephp/officepersontasks/add',
     data: { 
         company_id: $("#company_id").val(), 
         person_id: $("#person_id").val(), 
         task_id: "11" 
     },
     success: function(data) {
         alert('Load was performed.'+data);
     }
});

在cakeide上,对象$this->request->data包含已发送的数据,因此$this->OfficePersonTask->save($this->request->data)会针对OfficePersonTask模型保存数据。问题是所发送的数据必须被拆分,一些数据将保存在数据库表中,其余数据将保存在第二个表中?这样做的最佳解决方案是什么?如何爆炸$this->request->data对象?

3 个答案:

答案 0 :(得分:3)

像往常一样使用Cake FormHelper创建表单。然后,您将在服务器端代码中执行saveAll而不是save()来保存关联模型。

您的javascript应该更改为:

data: $('#myForm').serializeArray(),

答案 1 :(得分:0)

我假设通过拆分对象意味着将对象数据的一部分放在一个数组/对象中,而将另一部分放在另一个数组/对象中。您可以创建一个新的数组/对象,并使用您需要的部分数据填充它。

对于阵列,你可以这样做,

$new_data[] = $data->company_id;
$new_data[] = $data->person_id;
// now, $new_data has the values in an array.

您也可以轻松地为对象轻松完成。

答案 2 :(得分:0)

使用data[modelName][fieldNameInTable]命名输入字段。 当我说出名字时,我正在谈论输入的名称字段。 然后蛋糕应该直接保存!