gpt4 book ai didi

zend-framework - 商店和模型上的自定义代理似乎不一致(并且不适用于模型)

转载 作者:行者123 更新时间:2023-12-04 04:25:38 24 4
gpt4 key购买 nike

我正在使用 Extjs 4,并创建了一个自定义 Rest 代理来处理与我的 Zend 后端 api 的通信。
(见帖子 http://techfrere.blogspot.com/2011/08/linking-extjs4-to-zend-using-rest.html)

当使用 Store 处理通信时,我使用 Ext.require 加载代理,然后在类型字段上引用代理,一切都很好,它加载了我的数据:按照:

Ext.require('App.utils.ZendRest');
...
proxy : {
type : 'zest', // My custom proxy alias
url : '/admin/user'
...
}

然后我决定尝试直接在模型上使用代理......但没有运气。上面的逻辑是行不通的。
问题
1.在引用zest时,没有找到之前加载的ZendRest类(别名为proxy.zest)
2. 它尝试从 App.proxy.zest(不存在)加载缺失的类。
所以我尝试将我的类(class)移动到这个位置并重命名为它似乎想要的。没运气。
它加载了类,但仍然没有初始化应用程序......我在任何地方都没有错误,所以很难弄清楚问题出在哪里......

现在看来我将不得不恢复使用我的 Zend Rest 代理始终通过 Store。

问题是……有没有其他人看到过这种行为?这是一个错误,还是我错过了什么?

谢谢...

最佳答案

使用您的代理定义,我已设法使其工作。
我不确定为什么它对你不起作用。我才搬家ZendRestPrj.proxy命名空间并添加 requires: ['Prj.proxy.ZendRest']到模型。

代码:

// controller/Primary.js
Ext.define('Prj.controller.Primary', {
extend: 'Ext.app.Controller',
stores: ['Articles'],
models: ['Article'],
views: ['article.Grid']
});

// model/Article.js
Ext.define('Prj.model.Article', {
extend: 'Ext.data.Model',
fields: [
'title', 'author', {
name: 'pubDate',
type: 'date'
}, 'link', 'description', 'content'
],
requires: ['Prj.proxy.ZendRest'],
proxy: {
type: 'zest',
url: 'feed-proxy.php'
}
});


// store/Articles.js
Ext.define('Prj.store.Articles', {
extend: 'Ext.data.Store',
autoLoad: true,
model: 'Prj.model.Article'
});

// proxy/ZendRest.js
Ext.define('Prj.proxy.ZendRest', {
extend: 'Ext.data.proxy.Ajax',
alias : 'proxy.zest',
appendId: true,
batchActions: false,
buildUrl: function(request) {
var me = this,
operation = request.operation,
records = operation.records || [],
record = records[0],
format = me.format,
reqParams = request.params,
url = me.getUrl(request),
id = record ? record.getId() : operation.id;

if (me.appendId && id) {
if (!url.match(/\/$/)) {
url += '/';
}

url += 'id/' + id;
}

if (format) {
reqParams['format'] = format;
}
/* <for example purpose> */
//request.url = url;
/* </for example purpose> */
return me.callParent(arguments);
}

}, function() {
Ext.apply(this.prototype, {
actionMethods: {
create : 'POST',
read : 'GET',
update : 'PUT',
destroy: 'DELETE'
},
/* <for example purpose> */
reader: {
type: 'xml',
record: 'item'
}
/* </for example purpose> */
});
});

Here是工作样本,和 here压缩代码。

关于zend-framework - 商店和模型上的自定义代理似乎不一致(并且不适用于模型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6966960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com