2014-05-15 33 views
0

我使用的是Sugarcrm 6.5,我想問是否可以在主表內而不是cstm表中創建字段。現在我通過這個帖子 http://support.sugarcrm.com/02_Documentation/04_Sugar_Developer/Sugar_Developer_Guide_7.1/70_API/Application/Module_Loader/90_Package_Examples/Creating_an_Installable_Package_that_Creates_New_Fields/這種方法創建自定義字段自定義字段添加到CSTM表如何將字段添加到主表而不是cstm表

當我環顧四周,這個後下(最後迴應說,這是可能的)

http://forums.sugarcrm.com/f3/how-take-out-_c-when-creating-custom-field-56452/

回答

5

也許你不應該

這是違反標準的最佳實踐。一般的原因是,如果SugarCRM發佈了一個更新,該更新恰巧爲該模塊包含一個新字段,它將覆蓋您已有的內容並導致問題和/或數據丟失。這也很難說這個領域是一個自定義領域,這可能會使來自不同開發人員/團隊的未來定製變得更加困難。

但你可以

可接受的「但」在這種情況下是,你不能讓數據庫的fields_meta_data表版本控制之下。不是用GIT,不用SVN - 你不能。因此,如果您在使用VCS進行推送的多開發人員或多系統環境中工作,那麼實際上最好手動編寫vardefs,並且可以採用相對升級安全的方式進行。操作方法如下:

將您的vardef部分添加到您的第一個vardef文件中,例如Studio不允許調整的部分。 /custom/Extension/modules/MyModule/Ext/Vardefs/myfield.php。對於可能的每種字段/數據類型,這些vardefs是name,vnametype

<?php 
$dictionary['MyModule']['fields']['myfield']['name']='myfield'; 
$dictionary['MyModule']['fields']['myfield']['vname']='LBL_MYFIELD'; 
$dictionary['MyModule']['fields']['myfield']['type']='varchar'; 

一旦這樣創造了你可以(像alter table mymodule add myfield varchar(255)這也將有助於建立數據庫,東西)運行要修理和重建,然後去找到在Studio領域。根據需要調整長度或審覈值,然後重新保存該字段。 Studio將創建一個以「sugarfield_」爲前綴的新文件,例如/custom/Extension/modules/MyModule/Ext/Vardefs/sugarfield_myfield.php這個文件的內容會有所不同數據類型由比我們的第一個文件多,但將包括類似如下:

<?php 
$dictionary['MyModule']['fields']['myfield']['audited'] = false, 
$dictionary['MyModule']['fields']['myfield']['massupdate'] = true, 
$dictionary['MyModule']['fields']['myfield']['duplicate_merge'] = 'enabled', 
$dictionary['MyModule']['fields']['myfield']['duplicate_merge_dom_value'] = '1', 
$dictionary['MyModule']['fields']['myfield']['merge_filter'] = 'disabled', 
$dictionary['MyModule']['fields']['myfield']['calculated'] = false, 

你也應該在/custom/Extension/modules/MyModule/Ext/Language/en_us.myfield.php創建語言文件。該語言文件的示例內容:

<?php 
$mod_strings['LBL_MYFIELD'] = 'My Awesome Field'; 

額外的安全

所以,如果手工編寫你所有的自定義字段中的下側是,他們可以很容易地覆蓋,但更新(例如,您創建了一個字段稱爲「Marketo ID」,然後Sugar提供),我們如何降低風險?與創建自定義模塊時相同,我們可以降低風險 - 只需在系統或公司的某個標準縮寫的前面加上前綴即可。在我現在的僱主中,我們都爲Ticomix使用tcx_。過去,我們使用psi_進行性能分析解決方案。如果不是打電話給您的字段myfield,您應該將其稱爲tcx_myfield,這樣可以大大降低其他人創建同名字段的風險。這不是不可能的,但你可能很安全。

請注意,您不需要需要將此前綴添加到標籤。 LBL_TCX_MYFIELD可以直接翻譯爲「我的領域」,如果需要,您可以在未來非常輕鬆地調整標籤。

+0

如果可能的話請提供像你說的例子,字段類型是'varchar'。非常感謝你 –

+0

編輯使用類型varchar給出一個例子。 –

+0

非常感謝Matthew。有效。我只想問一個問題,我在哪裏可以找到對'name','vname','type'或'len'的引用,因爲我想設置默認值。同樣在清單文件中,我可以設置標籤'array('name'=>'calldate','label'=>'Call Date',',但是,如果我['label']喜歡你的帖子,它不會必須通過en_us.myfield.php –

相關問題