2012-05-11 16 views
3

私はeformsフレームワーク設計を行っています。これには複数の製品があり、それぞれの製品には異なる種類のフォームがあります。ドラッグ&ドロップでフォームパネルに表示され、これらのフォームパネルのデータはJsonファイルから取得されます。私たちは各フォームのjsonファイルを持っています。フォームのこれらのフィールドにバリデーションを追加する場合は、どのようにこれを行うことができますか?bcozフォームフィールドはドラッグアンドドロップで動的に生成されるjsonで利用できます。Extjsで動的に生成されたフォームの検証

私はあなたにこれを手伝ってもらえますか?

おかげに関して rajNaveen

答えて

2

あなたがフォームで、モデルを関連付けるていますか?そうであれば、検証ロジックをモデルに入れることができます。たとえば :

Ext.define('MyModel', { 
    extend: 'Ext.data.Model', 
    fields: ['field1', 'field2'], 
    validations: [ 
     { type: 'presence', field: 'field1' } 
    ] 
}); 

検証の設定に関するいくつかの詳細情報: http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.validations

しかし、彼らは、フォームで動作するようにするために、あなたは少しの魔法が必要になります。これは、(MVCを使用して)コントローラからのコードである。この内部

onFormSave(): function() { 
    var form = this.form.getForm(), 
     updatedRecord = MyModel.create(); 
    form.updateRecord(updatedRecord); //saved all the data from the form, to empty object 
    var errors = updatedRecord.validate(); //validate the object 
    if (errors.isValid()) { //if the object is valid, then save the data to the model associated with the form. 
     form.updateRecord(form.getRecord()); 
    } 
    else { 
     form.markInvalid(errors); 
    } 
} 

ロジックは非常に単純であり、私は、オブジェクトの新しいインスタンスを作成し、それを検証します。検証がOKの場合は、フォーム内のオブジェクトにデータを保存します。フォーム内のオブジェクトにはデータが保存され、保存されていない場合はエラーが表示されます。

関連する問題