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);
     }
});

ケーキサイドでは、オブジェクト$this->request->dataには送信されたデータが含まれているため、モデル$this->OfficePersonTask->save($this->request->data)に対してデータを保存します。OfficePersonTask問題は、送信されたデータが分割され、一部のデータがDBテーブル内に保存され、残りのデータが2番目のテーブルに保存されることです。これを行うための最良の解決策は何ですか?$this->request->dataオブジェクトを爆発させるにはどうすればよいですか?

4

3 に答える 3

3

通常どおり、ケーキFormHelperを使用してフォームを作成します。次に、サーバー側のコードで、関連するモデルも保存するのsaveAllではなく、を実行します。save()

次に、JavaScriptは次のように変更されます。

data: $('#myForm').serializeArray(),
于 2012-08-06T18:41:24.710 に答える
0

オブジェクトを分割するということは、オブジェクトのデータの一部を1つの配列/オブジェクトに入れ、他の部分を別の配列/オブジェクトに入れることを意味していると思います。新しい配列/オブジェクトを作成し、必要なデータの一部をその配列に入力できます。

アレイの場合、次のように実行できます。

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

オブジェクトに対しても簡単に行うことができます。

于 2012-08-06T18:46:58.687 に答える
0

入力フィールドに。で名前を付けますdata[modelName][fieldNameInTable]。私が名前を言うとき、私は入力の名前フィールドについて話している。次に、ケーキはそれを直接保存する必要があります!

于 2012-08-06T18:49:38.970 に答える