目前我正在尝试更改“已分配给”'用户只要用户进入潜在客户详细信息屏幕,就可以获得当前用户的信号。
我有以下代码:
function checkPermission(Vtiger_Request $request) {
$moduleName = $request->getModule();
$recordId = $request->get('record');
$recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
$recordModel->set('assigned_user_id',$current_user->id);
$recordModel->save();
...
return true;
}
问题是,vTiger不是使用新分配的用户保存当前记录,而是将此记录复制到新记录中,并将当前用户保存为新分配的用户。
使用vTiger v6.2.0
答案 0 :(得分:2)
您需要在保存
之前将模式设置为recordModel$recordModel->set('mode','edit');
答案 1 :(得分:0)
尝试这样的事情:
$recordModel= Vtiger_Record_Model::getInstanceById($recordId,$moduleName);
$recordModel->set(my_fields, my_new_value);
$recordModel->set(my_fields2, my_new_value2);
$recordModel->set('mode', 'edit');
$recordModel->save();
答案 2 :(得分:0)
带有事件处理程序的托盘;
创建一个文件:/modules/yourmodulename/handlers/RecordUpdater.php 然后将下面的代码放在RecordUpdater.php文件中:
require_once 'include/events/VTEventHandler.inc';
class yourmodulename_RecordUpdater_Handler extends VTEventHandler {
function handleEvent($eventName, $data) {
global $adb;
$currentUserModel = Users_Record_Model::getCurrentUserModel();
$module = $data->getModuleName();
if ($eventName === 'vtiger.entity.beforesave' AND $module === "yourmodulename") {
require_once 'modules/yourmodulename/yourmodulename.php';
$currentUserId = $currentUserModel->getId();
$data->set('assigned_user_id', $currentUserId);
}
}
}
最后不要忘记在vtiger_eventhandlers表中插入:
INSERT INTO `vtigercrm`.`vtiger_eventhandlers` (
`eventhandler_id` ,
`event_name` ,
`handler_path` ,
`handler_class` ,
`cond` ,
`is_active` ,
`dependent_on`
)
VALUES (
NULL , 'vtiger.entity.beforesave', 'modules/yourmodulename/handlers/RecordUpdater.php', 'yourmodulename_RecordUpdater_Handler', NULL , '1', '[]'
);
然后用1
递增vtiger_eventhandlers_seq就是这样:)
我希望,这有助于你