2

extJS バージョン 4.0 を使用してエントリ フォームを生成しています。そのフォームには、すべてのフィールドデータを ajax 経由で php に送信する保存ボタンがあります。データ自体の転送プロトコルとして、json を使用しています。

このデータを処理するための動的な (一般的な) ルーチンを作成する必要があるため (その 1 つのフォームがそのプロジェクトの唯一のフォームではないため)、json データを何らかの方法でグループ化する必要があります。私が持っている要件の1つは、「フィールド名」をそのままにする必要があるということです(自動保存ルーチンでデータベースの適切な列にアクセスするために送信されたフィールド名を使用するため)。

ここでの私の質問は、json を介して送信されるデータを何らかの方法でグループ化する方法があるということです (したがって、extJS はそれをグループ化します)。簡単な例として:

エントリフォームでは、フォームに次のフィールドが表示されている 2 つのテーブル (1. Person 2. bankaccount) のデータを保存しています。

extJS を使用してこのデータを適切にグループ化し、このようなものを生成する方法はありますか?

{"person":[{"firstname": "Mark", "lastname":"Smith"}],"bankaccount":[{"account number":123112,"bank number":1A22A1}]}

現在、私は次のようなものを得ています:

{"firstname": "Mark", "lastname":"Smith","account number":123112,"bank number":1A22A1}

個人と銀行口座の両方が別々のストアにあります。

Tnx。

4

1 に答える 1

2

1 つは「person」用、もう 1 つは「bankaccount」用です。

Ext.define ('Person', {
    extend: 'Ext.data.Model' ,
    fields: ['firstname', 'lastname']
});

Ext.define ('BankAccount', {
    extend: 'Ext.data.Model' ,
    fields: ['accountnumber', 'banknumber']
});

var personStore = Ext.create ('Ext.data.Store', {
    model: 'Person' ,
    data: [
        {firstname: 'foo', lastname: 'bar'} ,
        {firstname: 'zoo', lastname: 'zar'} ,
        {firstname: 'too', lastname: 'tar'} ,
        {firstname: 'goo', lastname: 'gar'} ,
        {firstname: 'moo', lastname: 'mar'}
    ]
});

var bankAccountStore = Ext.create ('Ext.data.Store', {
    model: 'BankAccount' ,
    data: [
        {accountnumber: 10000, banknumber: 10000} ,
        {accountnumber: 20000, banknumber: 20000} ,
        {accountnumber: 30000, banknumber: 30000} ,
        {accountnumber: 40000, banknumber: 40000} ,
        {accountnumber: 50000, banknumber: 50000}
    ]
});

次に、これらのストアを JSON としてダンプします。問題ない!コンテナー ( jsonData ) を作成し、それをストアで埋めます。

var jsonData = {
    person: [] ,
    bankaccount: []
};

personStore.each (function (person) {
    jsonData.person.push (person.data);
});

bankAccountStore.each (function (bank) {
    jsonData.bankaccount.push (bank.data);
});

console.log (Ext.JSON.encode (jsonData));

そして、これはコンソールの出力です:

{"person":[{"firstname":"foo","lastname":"bar"},{"firstname":"zoo","lastname":"zar"},{"firstname":"too","lastname":"tar"},{"firstname":"goo","lastname":"gar"},{"firstname":"moo","lastname":"mar"}],"bankaccount":[{"accountnumber":10000,"banknumber":10000},{"accountnumber":20000,"banknumber":20000},{"accountnumber":30000,"banknumber":30000},{"accountnumber":40000,"banknumber":40000},{"accountnumber":50000,"banknumber":50000}]}

それはあなたが要求したものですか?

これがフィドルです

于 2012-09-20T13:43:59.127 に答える