【问题标题】:SugarCRM installable changes in detailviewSugarCRM 可安装更改详细信息视图
【发布时间】:2012-10-10 05:07:12
【问题描述】:

我有一个简单的问题,但对我来说可能很严重,我创建了自定义字段并将它们全部添加到 Leads 模块的custom\modules\Leads\metadata\detailviewdefs.php(详细视图布局)中,但问题是我必须进行更改的安装程序包。我使用自定义字段进行管理,并通过清单将它们复制到 custom\Extension\modules\Leads\Ext\Vardefs 中。现在我不知道如何通过清单应用 detailviewdefs 更改(在 detailview 中添加新字段面板)。关键是现有的detailview布局不应该改变,而只是在其中添加一个新的面板。

我认为可能的解决方案是我应该在 $layout_defs 数组 $layout_defs["Leads"]["DetailView"] ['panels']['panel_name'] 中添加代码并将其放入 custom\Extension\modules\Leads\Ext\Layoutdefs\ 并通过清单复制 Layoutdefs 文件。我试过这个,但似乎没有工作。 如果可以的话,寻找一个聪明的解决方案分享。

补充: 即使我从Studio ->export Customizations 导出模块更改并使用module builder 在其他实例中导入。它会覆盖较新实例中所有以前的自定义文件(自定义)(这不是 SugarCRM 中的限制),但我的要求是仅在较新实例的详细视图中添加更改。

【问题讨论】:

    标签: sugarcrm


    【解决方案1】:

    这是一个艰难的过程。我知道有两种选择。 1) 向用户提供有关如何使用 Studio 将字段添加到布局的说明 2) 在 post_install.php 脚本中模拟 Studio 布局部署如何将字段插入到任何给定布局中(最佳做法是创建一个新的如果大规模分发,则为您的所有领域提供面板)。

    【讨论】:

    • tHank 的@egg 回答,第一个选项不适合我的情况,因为我的字段不是那么简单从工作室添加(具有自定义代码),所以我现在走向第二个选项并期待它可以解决我的问题...
    【解决方案2】:

    我发现了 Sugar 的 ModuleInstaller 类的以下函数,可以通过 manifest script 在布局中添加或删除字段。这些函数将同时向editviewdetail view 添加/删除字段。只需在post_install / pre_install 中添加以下行,不需要任何内容​​,

       $installer_func = new ModuleInstaller();
       $layoutAdditions = array('Users' => 'users_access');
    

    Users 模块中添加users_access 字段:

       $installer_func->addFieldsToLayout($layoutAdditions);
    

    Users 模块中删除users_access 字段:

       $installer_func->removeFieldsFromLayout($layoutAdditions);
    

    希望对您有所帮助。

    曼苏尔

    【讨论】:

    • 您的解决方案听起来很有趣。但是请告诉我是否可以使用自定义 js 代码添加新元素,例如:某些文本框的 onblur。此外,如果存在现有元素,例如:联系人中的 first_name 并且我想要在上面添加 onblur 功能。我该怎么做?