我找到了。
问题不在于我将代码放在哪里,问题在于 viewdef 的缓存。所以修复+重建后看到的第一个项目将是其他项目的默认值。起初我没有发现问题,因为我将 SugarCRM 设置为开发人员模式,在这种模式下它不会缓存 viewdef。
最简单的方法是这样的:首先,复制editviewdefs并将其命名为您喜欢的任何名称(我的是:closededitviewdefs.php)现在,在新创建的editview文件中更改您喜欢的任何内容。进行更改后,将 closededitviewdefs.php 中的第 5 行从更改'EditView' =>
为'ClosedEditView' =>
完成后,在模块/视图文件夹中创建一个文件:view.edit.php。这些是它的内容(在适用的情况下替换模块特定的内容):
<?php
class [REPLACEWITHMODULENAME]ViewEdit extends ViewEdit {
public function preDisplay() {
$bean = $this->bean;
$isClosed = $bean->sent;
if ($isClosed==1) {
$metadataFile = 'custom/modules/[MODULEFOLDER]/metadata/closededitviewdefs.php';
$this->ev = $this->getEditView();
$this->ev->view = 'ClosedEditView';
} else {
$metadataFile = 'custom/modules/[MODULEFOLDER]/metadata/editviewdefs.php';
$this->ev = $this->getEditView();
}
$this->ev->ss =& $this->ss;
$this->ev->setup($this->module, $this->bean, $metadataFile, get_custom_file_if_exists('include/EditView/EditView.tpl'));
}
}
?>
这样从现在开始创建两个缓存文件。这样做有一个主要问题:您的封闭编辑视图中没有页眉和页脚!您可以通过将以下内容添加到 closededitviewdefs.php 轻松解决此问题:
'form' =>
array(
'headerTpl' => 'include/EditView/header.tpl',
'footerTpl' => 'include/EditView/footer.tpl',
),
确保关闭开发者模式以获得正确的测试结果。运行修复和重建。现在一切都应该按预期工作。:)