В Suitecrm / SugarCRM 6.5
Мне нужно изменить ListView.Отображение значения поля на основе определенного условия.
В модуле Учетная запись поле name
может быть пустым в зависимости от определенных условий, я требую, чтобы при этом отображалось значение настраиваемого поля.Чтобы сделать это, сначала я попытался использовать 'customCode' + smarty как обычно в Edit / Detail vies, но в нескольких постах упоминалось, что это невозможно в ListView.Концессия заключается в использовании логических хуков + поля не-db для хранения вычисленного поля.После этого SO ответ я написал следующее:
Пользовательское поле на custom/Extension/modules/Accounts/Ext/Vardefs/custom_field_name_c.php
<?php
$dictionary['Account']['fields']['name_c']['name'] = 'account_name_c';
$dictionary['Account']['fields']['name_c']['vname'] = 'LBL_ACCOUNT_NAME_C';
$dictionary['Account']['fields']['name_c']['type'] = 'varchar';
$dictionary['Account']['fields']['name_c']['len'] = '255';
$dictionary['Account']['fields']['name_c']['source'] = 'non-db';
$dictionary['Account']['fields']['name_c']['dbType'] = 'non-db';
$dictionary['Account']['fields']['name_c']['studio'] = 'visible';
Метка на suitecrm/custom/Extension/modules/Accounts/Ext/Language/es_ES.account_name_c.php
<?php
$mod_strings['LBL_ACCOUNT_NAME_C'] = 'Nombre de cuenta';
Логическая запись в custom/modules/Accounts/logic_hooks.php
$hook_array['process_record'] = Array();
$hook_array['process_record'][] = Array(
2,
'Get proper name',
'custom/modules/Accounts/hooks/ListViewLogicHook.php',
'ListViewLogicHook',
'getProperName'
);
Логическая запись в custom/modules/Accounts/hooks/ListViewLogicHook.php
<?php
class ListViewLogicHook
{
public function getProperName(&$bean, $event, $arguments)
{
if (empty($bean->fetched_row['name'])) {
$bean->account_name_c = $bean->fetched_row['person_name_c'];
} else {
$bean->account_name_c = $bean->fetched_row['name'];
}
// Here I also tried, but same result
// $bean->account_name_c = empty($bean->name) ? $bean->person_name_c : $bean->name;
}
}
listviewdefs.php в custom/modules/Accounts/metadata/listviewdefs.php
Я добавил поле
'NAME_C' =>
array (
'width' => '20%',
'label' => 'LBL_ACCOUNT_NAME_C',
'default' => true,
),
После этих модификаций и ремонта я надеюсь увидеть поле заполненным с правильным значением.Но это кажется пустым.Я проверил, что логический хук вызывается правильно, но поля name
и person_name_c
всегда пусты.Если это уместно, я проверил в Studio, что поля name
в учетной записи имеют тип name
Я не знаю, что это значит, когда речь заходит о получении его значения.
Я ценю ваши комментарии