我有一个 Web 应用程序,我手动将其从 ExtJS 4 移植到 ExtJS 7。在大多数情况下,读取查询都可以工作。
但是,经过进一步测试,创建和更新查询根本不起作用。
例如,有各种对话框/浮动面板,我可以在其中使用表单创建和编辑某些模型,并在用户按下“保存”按钮后。在 ExtJS4 中,我可以简单地执行以下操作:
创建新模型:
var model = Ext.create('AppName.model.Model_Name', {});
var store = Ext.getStore('Store_Name');
var form = button.up('form');
form.updateRecord(model);
store.add(model);
store.sync({
// code for callback
});
为了更新模型,我做了类似的事情:
var form = button.up('form');
var model = form.getRecord();
var store = Ext.getStore('Store_Name');
form.updateRecord(model);
form.set('field_1', value_1);
form.set('field_2', value_2);
store.sync({
// code for callback
});
然后我就不会有任何麻烦了,存储/代理通常会按照指定执行创建或更新查询。
以下是商店的示例:
Ext.define('App.store.store_name', {
extend: 'Ext.data.Store',
requires: [
'App.model.model_name',
'Ext.data.proxy.Ajax',
'Ext.data.reader.Json',
'Ext.data.writer.Json'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
storeId: 'store_id',
batchUpdateMode: 'complete',
model: 'App.model.model_name',
proxy: {
type: 'ajax',
batchActions: false,
api: {
create: 'folder/folder/createQuery.php',
read: 'folder/folder/readQuery.php',
update: 'folder/folder/updateQuery.php',
destroy: 'folder/folder/deleteQuery.php'
},
url: '',
reader: {
type: 'json',
keepRawData: true,
messageProperty: 'message',
rootProperty: 'data'
},
writer: {
type: 'json',
writeAllFields: true,
encode: true,
rootProperty: 'data'
}
}
}, cfg)]);
}
});
但是,在 ExtJS 7 中,似乎不再这样工作了。我在创建和更新 PHP 代码中放置了 echo 行,只是为了查看 PHP 代码是否被执行。这通常也可以帮助我调试 PHP 代码。但是在这种情况下,没有显示任何 echo 语句。
我需要在商店或代理中实现任何参数吗?
问题出在 PHP 文件上,存在与日期格式相关的错误,一旦解决该错误,查询就会通过。
我随机尝试的另一家商店也存在不同的问题。
一般来说,查询仍然会被调用并执行,但 echo 语句不再显示在开发人员控制台日志中,但它仍然显示在“网络”选项卡下,您可以选择 php 脚本并在那里查看输出.