我试图将以下功能添加到SugarCRM详细信息页中:
单击按钮时,
到目前为止,我已经成功地添加了一个按钮(我在这个问题中讨论了Adding a button with custom JavaScript in SugarCRM 6.5),通过将它添加到detailviewdefs.php中,这是常用的糖方法。
但是,'soap' => 'CaseButtons/Approve'的定义中没有包含“soap”字段的按钮,而是将一个JavaScript函数连接到执行jQuery ajax调用的按钮上,并显示一个弹出窗口。
在我的SugarCRM结构中创建一个随机的php文件,然后尝试调用它,最终会在403个禁忌中结束。但是,我成功地调用了我在控制器类中创建的函数:
$ajax( { url: "?module=Cases&action=GetQuestions" ...我能够传递参数并得到这个呼叫的响应。一切看起来都很好。
然后,我在调试器中注意到,函数中没有填充$this->bean属性。对象被设置,但是除了field_key (它被设置为某些guid)之外,其他字段都不包含一个值(所有的空数组或空数组),包括id。我检查了现有的函数,并且填充了bean中的字段。
对于我收集信息的第一个调用来说,这不是一个问题,但是对于第二个应该保存bean的调用来说,这是一个很大的问题。
我意识到这可能是因为我没有使用标准的'soap‘方式来访问控制器。但我无法想象如何以这种方式创建具有自定义数据和行为的弹出窗口。
有什么方法可以确保在函数运行时加载bean?我可以手动加载吗?我有bean的id可供我使用(我从UI发送它)。这会破坏有关保存bean的正常糖类功能(预保存、保存后挂钩等)吗?
或者有什么方法我可以从JavaScript调用糖皂?我认为“提交”按钮可以调用SOAP (因为它是唯一真正需要它的)。
发布于 2019-12-09 07:58:13
如果您将id传递给您的操作,则可以使用
$bean = BeanFactory::getBean('Cases', $id);手动加载id $id的情况。
这不会影响logic_hooks ->save()方法仍然会触发
https://stackoverflow.com/questions/59180476
复制相似问题