在重定向页面之前获取新创建的记录 ID
Get newly created id of a record before redirecting page
我想在单击保存按钮时以及在重定向页面之前使用 javascript 检索新创建的记录的 ID。
你有什么想法吗?
谢谢!
在 Sugar 7 中执行此操作的一种方法是覆盖 CreateView。
这里是一个 CustomCreateView 示例,它在成功创建新帐户后但在 Sugar 对创建的记录做出反应之前在警报消息中输出新 ID。
custom/modules/Accounts/clients/base/views/create/create.js
:
({
extendsFrom: 'CreateView',
// This initialize function override does nothing except log to console,
// so that you can see that your custom view has been loaded.
// You can remove this function entirely. Sugar will default to CreateView's initialize then.
initialize: function(options) {
this._super('initialize', [options]);
console.log('Custom create view initialized.');
},
// saveModel is the function used to save the new record, let's override it.
// Parameters 'success' and 'error' are functions/callbacks.
// (based on clients/base/views/create/create.js)
saveModel: function(success, error) {
// Let's inject our own code into the success callback.
var custom_success = function() {
// Execute our custom code and forward all callback arguments, in case you want to use them.
this.customCodeOnCreate(arguments)
// Execute the original callback (which will show the message and redirect etc.)
success(arguments);
};
// Make sure that the "this" variable will be set to _this_ view when our custom function is called via callback.
custom_success = _.bind(custom_success , this);
// Let's call the original saveModel with our custom callback.
this._super('saveModel', [custom_success, error]);
},
// our custom code
customCodeOnCreate: function() {
console.log('customCodeOnCreate() called with these arguments:', arguments);
// Retrieve the id of the model.
var new_id = this.model.get('id');
// do something with id
if (!_.isEmpty(new_id)) {
alert('new id: ' + new_id);
}
}
})
我用 Sugar 7.7.2.1 的 Accounts 模块测试了这个,但是应该可以在 Sugar 中的所有其他 sidecar 模块中实现这个。
但是,这 not 对 backward-c 中的模块有效兼容模式(URL 中带有 #bwc
的模式)。
注意:如果有问题的模块已经有自己的 Base<ModuleName>CreateView
,您可能应该从 <ModuleName>CreateView
(没有 Base
)而不是默认的 CreateView
扩展.
请注意,此代码在 Sugar 升级过程中有很小的几率被破坏,例如如果默认 CreateView
代码收到 saveModel
函数定义中的更改。
此外,如果您想进一步阅读有关扩展视图的内容,可以阅读关于此主题的 SugarCRM 开发博客 post:https://developer.sugarcrm.com/2014/05/28/extending-view-javascript-in-sugarcrm-7/
我使用逻辑钩子解决了这个问题(保存后),供您参考,无论 suitecrm 的版本如何,我都使用 Sugar 6.5。
谢谢!
我想在单击保存按钮时以及在重定向页面之前使用 javascript 检索新创建的记录的 ID。
你有什么想法吗?
谢谢!
在 Sugar 7 中执行此操作的一种方法是覆盖 CreateView。
这里是一个 CustomCreateView 示例,它在成功创建新帐户后但在 Sugar 对创建的记录做出反应之前在警报消息中输出新 ID。
custom/modules/Accounts/clients/base/views/create/create.js
:
({
extendsFrom: 'CreateView',
// This initialize function override does nothing except log to console,
// so that you can see that your custom view has been loaded.
// You can remove this function entirely. Sugar will default to CreateView's initialize then.
initialize: function(options) {
this._super('initialize', [options]);
console.log('Custom create view initialized.');
},
// saveModel is the function used to save the new record, let's override it.
// Parameters 'success' and 'error' are functions/callbacks.
// (based on clients/base/views/create/create.js)
saveModel: function(success, error) {
// Let's inject our own code into the success callback.
var custom_success = function() {
// Execute our custom code and forward all callback arguments, in case you want to use them.
this.customCodeOnCreate(arguments)
// Execute the original callback (which will show the message and redirect etc.)
success(arguments);
};
// Make sure that the "this" variable will be set to _this_ view when our custom function is called via callback.
custom_success = _.bind(custom_success , this);
// Let's call the original saveModel with our custom callback.
this._super('saveModel', [custom_success, error]);
},
// our custom code
customCodeOnCreate: function() {
console.log('customCodeOnCreate() called with these arguments:', arguments);
// Retrieve the id of the model.
var new_id = this.model.get('id');
// do something with id
if (!_.isEmpty(new_id)) {
alert('new id: ' + new_id);
}
}
})
我用 Sugar 7.7.2.1 的 Accounts 模块测试了这个,但是应该可以在 Sugar 中的所有其他 sidecar 模块中实现这个。
但是,这 not 对 backward-c 中的模块有效兼容模式(URL 中带有 #bwc
的模式)。
注意:如果有问题的模块已经有自己的 Base<ModuleName>CreateView
,您可能应该从 <ModuleName>CreateView
(没有 Base
)而不是默认的 CreateView
扩展.
请注意,此代码在 Sugar 升级过程中有很小的几率被破坏,例如如果默认 CreateView
代码收到 saveModel
函数定义中的更改。
此外,如果您想进一步阅读有关扩展视图的内容,可以阅读关于此主题的 SugarCRM 开发博客 post:https://developer.sugarcrm.com/2014/05/28/extending-view-javascript-in-sugarcrm-7/
我使用逻辑钩子解决了这个问题(保存后),供您参考,无论 suitecrm 的版本如何,我都使用 Sugar 6.5。
谢谢!