Sencha Touch は初めてで、ログインフォームを検証しようとしています。メールとパスワードの 2 つのフィールドを持つユーザーの単純なモデルがあります。メッセージを含むいくつかの検証ルールを作成しました。
Ext.define('FirstApp.model.User', {
extend : 'Ext.data.Model',
config : {
fields : [{
name : 'email',
type : 'string'
}, {
name : 'password',
type : 'password'
}],
validations : [{
type : 'presence',
name : 'email',
message : "Enter email"
}, {
type : 'presence',
name : 'password',
message : "Enter Password"
}, {
type : 'format',
name : 'email',
matcher : /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/,
message : "Wrong Email Format"
}]
}
});
LoginForm ビューで、ログイン フォームを検証したいのですが、間違ったパラメータが入力された場合、アラート ポップアップにメッセージではなく undefined が表示されます。正しいデータフォームを入力した後、送信されます。ここで、LoginForm コードを確認できます。
Ext.define('FirstApp.view.login.LoginForm', {
extend : 'Ext.form.FormPanel',
xtype : 'loginpanel',
requires : ['Ext.form.FieldSet', 'FirstApp.model.User', 'Ext.field.Email', 'Ext.field.Password'],
config : {
title : 'LOGIN',
scrollable : 'vertical',
items : [{
xtype : 'fieldset',
title : 'Login',
defaults : {
required : true,
},
items : [{
xtype : 'emailfield',
name : 'email',
placeHolder : 'Email'
}, {
xtype : 'passwordfield',
name : 'password',
placeHolder : 'Password'
}]
}, {
xtype : 'button',
text : 'Log in',
ui : 'confirm',
handler : function() {
var model = Ext.ModelMgr.create(this.up('formpanel').getValues(), 'FirstApp.model.User');
var errors = model.validate(); console.log(errors);
var message = '';
if (errors.isValid()){
// Validation successful - show loader
Ext.Viewport.setMasked({
xtype:'loadmask',
message:'Logging in...'
});
// Login
this.up('formpanel').submit({
url: 'http://localhost/firstappweb/www/en/?do=login',
method: 'POST',
success: function(form, result) {
console.log(result);
Ext.Viewport.setMasked(false);
},
failure: function(form, result) {
console.log(result);
Ext.Viewport.setMasked(false);
}
});
} else {
// Validation failed
console.log(errors.items);
Ext.each(errors.items, function(rec, i) {
message += rec.message+"<br />";
});
Ext.Msg.alert("Validate", message, function(){});
return false;
}
}
}, {
// Do not log in
xtype : 'toolbar',
docked : 'bottom',
layout : {
pack : 'center'
},
items : [{
xtype : 'button',
text : 'Do not log in',
handler : function() {
Ext.Msg.alert("You do not want to log in?", 'Shame on you!', function() {
});
// this.push();
}
}]
}]
}
});
事前に助けてくれてありがとう。