モデルとフォームを関連付けていますか?その場合は、モデルに検証ロジックを配置できます。例えば:
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);
}
}
この中のロジックは非常に単純です。オブジェクトの新しいインスタンスを作成して検証しました。検証に問題がない場合は、フォーム内のオブジェクトにデータを保存します。そうでない場合は、送信され、エラーが表示されます。