在
SugarCRM installable changes in detailview
有人询问如何添加面板,使用Module Installer的清单文件添加到现有模块的editview / detailview,而不会消除以前在自定义目录中进行的自定义.
SugarCRM installable changes in detailview
有人询问如何添加面板,使用Module Installer的清单文件添加到现有模块的editview / detailview,而不会消除以前在自定义目录中进行的自定义.
答案提供了如何添加字段,但不提供面板.
我知道你可以使用从清单文件中调用的post_execute函数来编辑editviewdefs.PHP和detailviewdefs.PHP文件.
/自定义/模块//元数据/
目录,但这涉及对这些文件中已存在的内容进行一些猜测.
有没有人知道如何通过清单文件(或post_execute)添加面板,逐步添加面板,而不使用PHP代码手动编辑editviewdefs.PHP和detailviewdefs.PHP文件?
您正在使用ParserFactory类,该类可以在安装模块/包时执行的post_install或类似脚本中使用.我的理解是ParserFactory会调用自定义文件,如果它们存在,或者库存文件,如果没有,则适当安全地调整它们.
原文链接:https://www.f2er.com/php/139112.html在模块的目录中,创建一个名为’scripts’的子目录,并创建包含单个函数post_install()的’post_install.PHP’.你的包dir看起来像这样:
~$find . /LICENSE.txt /manifest.PHP /scripts/post_install.PHP
你像这样使用ParserFactory:
<?PHP function post_install(){ // $parser becomes an associative array for the Metadata,similar to editviewdefs.PHP require_once('modules/ModuleBuilder/parsers/ParserFactory.PHP'); $parser = ParserFactory::getParser('detailview','Accounts'); // finding the panels (which contain their fields),you can // now add fields or additional arrays to this array,creating new panels // (you could manipulate $parser->_viewdefs directly,but I find this easier) $panels = array_keys ( $parser->_viewdefs [ 'panels' ] ); // place your panels back into the $parser and save $parser->_viewdefs['panels'] = $panels; $parser->handleSave(false); };