Extjs 正在将值保存到数据库-逻辑错误
在下面的示例中,当我们单击该按钮时,所有表单数据(包括Extjs 正在将值保存到数据库-逻辑错误,extjs,extjs4,extjs-mvc,extjs4.1,Extjs,Extjs4,Extjs Mvc,Extjs4.1,在下面的示例中,当我们单击该按钮时,所有表单数据(包括键值)都将传递到要保存在数据库中的php文件。获取键值是通过var form=this.up('form').getForm()完成的语句 更新3 Ext.define ('Mycomp.model.MyClass',{ extend: 'Ext.data.Model', fields:['textfieldone'] }); ===============================================
键值
)都将传递到要保存在数据库中的php文件。获取键值是通过var form=this.up('form').getForm()完成的代码>语句
更新3
Ext.define ('Mycomp.model.MyClass',{
extend: 'Ext.data.Model',
fields:['textfieldone']
});
========================================================================
更新2
当用户单击按钮时,我会显示一个包含一个文本字段和一个按钮的视图(如下面的代码所示)。用户将输入一些值并单击按钮,用户在文本字段中输入的值应保存在数据库中(《代码》)存储区有指向PHP代码路径的链接
控制器
Ext.define('Mycomp.controller.MyClass',{
extend: 'Ext.app.Controller',
stores:['MyClass'],
models:['MyClass'],
views:['MyClassView'],
init: function(){
this.control({
'myclassview button[action=save]': {
click: this.myMethod
}
});
},
myMethod: function(button,record) {
var win = button.up('window'),
form = win.down('form'),
record = form.getForm().getRecord(),
values = form.getForm().getValues();
console.log (values);
console.log (record);
record.getRecord().set(values);
win.close();
this.this.getMyClassStore().sync();
}
});
看法
贮藏
===============================================================================
更新1
.... this.buttons = [
{
text: 'Save',
action: 'save'
}, ...
贮藏
控制员
this.control({
'mycalssform button[action=save]': {
click: this.myMethod
}
});
},
myMethod: function(button, record) {
var win = button.up('window'),
form = win.down('form'),
record = form.getRecord(),
values = form.getValues();
console.log (record);
console.log (values );
record.set(values);
win.close();
this.this.getmyClassStore().sync();
FIREBUG OUT>>它说记录未定义。为什么会这样
undefined
Object { textfileldone="hello", textfileldtwo="bever", more...}
record is undefined
[Break On This Error]
record.set(values);
为了将表单“绑定”到一个记录,您需要创建一个新的模型实例并调用form.loadRecord()
——只有这样做之后,您才能form.getRecord()
工作
或者(如果您只使用新记录来形成表单,这将是合适的),您可以在保存时创建一个新的模型记录并设置其值
沿着这些线的东西将创建一个新的模型记录:
var iStore = this.getmyClassStore();
var iModel = iStore.model;
var iNewRecord = iModel.create();
然后,您可以执行以下操作:
iValues = form.getValues();
iNewRecord.set( iValues );
然后您需要将新记录添加到存储:
iStore.add( iNewRecord )
因此,您的代码应该如下所示:
myMethod: function(button, record) {
var win = button.up('window'),
form = win.down('form'),
values = form.getValues(),
store = this.this.getmyClassStore(),
model = store.model,
record = model.create();
record.set( values );
store.add( record );
win.close();
store.sync();
}
为什么这被否决了,即使没有你的模型的一部分的评论也是textfieldone
?textfieldone
是模型的一部分,而且在MySQL数据库中,我将一列命名为textfieldone
,并且在视图中我有一个名为textfieldone
的textfieldone。你能发布请求吗(在firebug或chrome开发者工具中显示)?我已经更新了我的问题,并且添加了我的最新代码,现在我收到一个错误,说记录未定义。
。你能在这里帮助我吗?嗯,我已经定义了一个模型。我已经在上面包含了它(在更新3下)。是否要我将这3行代码添加到该模型类?我的意思是,您的表单没有引用模型记录。您需要在代码的某个地方创建正确的模型记录(商店的模型)然后设置从表单中获取的值。您能解决这个问题吗,或者您需要我复制/粘贴/更改您发布的代码吗?请,您能复制/粘贴代码吗?我整天都有点纠结于此是的,我已经消除了这个错误。但是当我回显$\u POST[textfieldone]时,我传递的记录没有显示出来;将有助于查看模型的定义。此外,firebug/chrome开发工具的请求调试。。。
iValues = form.getValues();
iNewRecord.set( iValues );
iStore.add( iNewRecord )
myMethod: function(button, record) {
var win = button.up('window'),
form = win.down('form'),
values = form.getValues(),
store = this.this.getmyClassStore(),
model = store.model,
record = model.create();
record.set( values );
store.add( record );
win.close();
store.sync();
}