如何以升级安全的方式扩展/include/SearchForm/SearchForm2.php?

时间:2014-03-14 08:50:31

标签: sugarcrm

如何以升级安全的方式扩展/include/SearchForm/SearchForm2.php

2 个答案:

答案 0 :(得分:1)

您可以创建传统上扩展SearchForm2(SearchForm2的类名)的/custom/include/SeachForm/CustomSearchForm2.php(例如CustomSearchForm2 extends SearchForm)。更难的任务是在那时访问您的自定义类。

SearchForm从include/MVC/View/views/view.list.php实例化 - 在几个可能的位置:受保护的方法getSearchForm2()和[假设]公共方法prepareSearchForm()

那么如何扩展view.list.php?那个更容易。对于您想要自定义列表视图的任何模块,请在/custom/modules/MyModule/views/view.list.php创建一个文件并将其定义为CustomMyModuleViewList extends ViewList。一些模块已经拥有自己的ViewList(例如,帐户,调用),因此对于那些您想要扩展其原始扩展ViewList的模块,例如CustomAccountsViewList extends AccountsViewList

因此,创建自定义ViewList扩展,复制粘贴您需要更改的方法(prepareSearchForm和getSearchForm2),并根据需要进行调整以加载自定义SearchForm类。

答案 1 :(得分:0)

假设这个问题与SugarCRM 6.5.x(以及可能更早的6.x版本 - 我还没有检查过)有关,Matthew Poer的回答是完全正确的,除了一件事:扩​​展的类是称为SearchForm而不是SearchForm2。要做到这一点:

  • 将include / SearchForm / SearchForm2.php复制到custom / include / SearchForm / SearchForm2.php
  • 编辑custom / include / SearchForm / SearchForm2.php并编辑类声明,将其更改为:

    require_once('include/SearchForm/SearchForm2.php');
    class CustomSearchForm extends SearchForm {
    
  • 将include / MVC / View / views / view.list.php复制到custom / include / MVC / View / views / view.list.php

  • 编辑custom / include / MVC / View / views / view.list.php并编辑类声明,将其更改为:

    require_once('include/MVC/View/views/view.list.php');
    class CustomViewList extends ViewList {
    
  • 在CustomViewList类的函数prepareSearchForm中,更改行

    require_once('include/SearchForm/SearchForm2.php');
    

    require_once('custom/include/SearchForm/SearchForm2.php');
    

    和行

    $searchMetaData = SearchForm::retrieveSearchDefs($this->module);
    

    $searchMetaData = CustomSearchForm::retrieveSearchDefs($this->module);
    
  • 在CustomViewList类的函数getSearchForm2中,更改行

    return new SearchForm($seed, $module, $action);
    

    return new CustomSearchForm($seed, $module, $action);
    

随后可以根据需要覆盖CustomSeachForm和CustomViewList的其他功能。如果您有特定于模块的view.list.php文件,您当然需要更改它们以扩展CustomViewList而不是ViewList。