我正在开发一个名为Zurmo的开源CRM平台。它使用Yii Framework和RedBean。我试图“延伸?”或更改特定“模块”中的功能。我想知道是否可以创建一个单独的文件,我可以在其中更改原始函数中的任何变量或数组。
我仍然无法在外部文件中定义类和类函数。我在accounts / models /中创建了一个名为AccountExtend.php的文件并加载它,认为第53行的AccountsModule.php是这样的:
public function getRootModelNames()
{
return array('Account, AccountExtend');
}
在AccountExtend.php文件中我有这个功能,它将标签从默认的“账单地址”更改为“物业地址”
class AccountExtend extends Account implements StarredInterface
{
protected static function translatedAttributeLabels($language)
{
$params = LabelUtil::getTranslationParamsForAllModules();
$paramsForAffiliations = $params;
return array_merge(OwnedSecurableItem::translatedAttributeLabels($language),
array(
'billingAddress' => Zurmo::t('AccountsModule', 'Property Address', array(), null, $language),
)
);
}
所以上面我将这个数组与以前在扩展的Account.php中合并的类“OwnedSecurableItem”合并,并在Account.php模型中用“AccountExtend”替换“OwnedSecurableItem”,并执行“merge_diff”php函数来覆盖默认标签。
现在我的问题是,这是最好的方法吗?任何提示或建议?我的下一步努力是尝试在Account.php模块中扩展一个函数,以添加自定义关系下拉字段或添加任何其他功能。我怎么能解决这个问题,因为这些是包含元素的更复杂的数组?
答案 0 :(得分:1)
如果方法是公共的或受保护的,则可以在新类中覆盖它,例如:
class Your_New_Class extends Account
{
protected static function translatedAttributeLabels($language)
{
//Your new logic
}
}