2013-03-07 45 views
3

我試圖在Smarty PHP中使用SugarCRM(6.5.3)的ListView(custom/modules/Leads/metadata/listviewdefs.php)中的自定義功能。在Listviewdefs中的SugarCRM Smarty代碼

這工作得很好:

'customCode' => '{$LD_ASSUMED_SUGAR_ACCOUNT_ID_C}', 

所以做到這一點:

'customCode' => '{$ACCOUNT_NAME}', 

然而,這只是輸出在列表中的代碼(括號和所有)(但正確的取代帳戶名值):

'customCode' => '{if $LD_ASSUMED_SUGAR_ACCOUNT_ID_C}{$ACCOUNT_NAME}{/if}', 

我在做什麼錯了!?

回答

6

我不認爲你可以實現你在ListView中尋找的結果,就像你可以在EditView & DetailView中一樣。一種解決這個問題的方法是將一個非db字段添加到Leads vardefs中,並使用邏輯掛鉤來處理條件格式。

創建一個新的vardef:

/custom/Extension/modules/Cases/Ext/Vardefs/my_listview_value_c.php

<?php 
    $dictionary['Lead']['fields']['my_listview_value_c'] = array(
     'name' => 'my_listview_value_c', 
     'vname' => 'LBL_MY_LISTVIEW_VALUE_C', 
     'type' => 'varchar', 
     'len' => '255', 
     'source' => 'non-db', 
    ); 
?> 

創建邏輯鉤:

/custom/modules/Leads/ListViewLogicHook.php

<?php 
class ListViewLogicHook { 

    public function getListValue(&$bean, $event, $arguments) { 
     if ($bean->ld_assumed_sugar_account_id_c) { 
      $bean->my_listview_value_c = $bean->account_name; 
     } else { 
      // Whatever you'd like 
     } 
    } 
} 

添加邏輯鉤條目:

// position, file, function 
$hook_array['process_record'] = Array(); 
$hook_array['process_record'][] = Array(1, 'Conditional formatting in a listview column', 'custom/modules/Leads/ListViewLogicHook.php','ListViewLogicHook','getListValue'); 

最後,在listviewdefs添加新列:

'MY_LISTVIEW_VALUE_C' => 
    array (
     'width' => '10%', 
     'label' => 'LBL_MY_LISTVIEW_VALUE_C', 
     'default' => true, 
), 

希望有所幫助。