Как реализовать пользовательское поле / столбец в Suite CRM Views - PullRequest
0 голосов
/ 30 ноября 2018

Я использую SuiteCRM 7.10.10 и хочу настроить ListView

Однако в свете этого вопроса я действительно хочу понять, как представления и компоненты взаимодействуют друг с другом, поэтомупока, просматривая документацию SuiteCRM, объяснения для представлений довольно редки, без конкретных примеров.

В этом примере я хочу настроить свой ListView для модуля «Компании» таким образом, чтобы описание (поле, которое уже существует) компании представляет только первые 10 символов.

Так что я думал о создании view.list.php в custom / modules / Companies / views, которыйвыглядит так:

<?php

require_once 'include/MVC/View/views/view.list.php';

if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

class CustomCompaniesViewList extends ViewList
{   

    public function preDisplay(){
        $this->bean->short_description = substr($this->bean->description,0,10);
        parent::preDisplay();
    }

    public function display(){
        parent::display();
    }

}
?>

(пробовал то же самое только с "$ short_description")

в дополнение к этому я настроил listviewdefs.php в custom / modules / Companies / metadata / listviewdefs.php

  ...
  'SHORT_DESCRIPTION' => 
  array (
    'type' => 'text',
    'studio' => 'visible',
    'label' => 'LBL_SHORT_DESCRIPTION',
    'sortable' => false,
    'width' => '10%',
    'default' => true,
  ),
  ...

Кроме того, я добавил еще одно поле в компании Vardefs, создав view_short_description_c.php в custom / modules / Companies / Ext / Vardefs

$dictionary['Companies']['fields']['short_description'] = array(
    'name' => 'short_descripton',
    'vname' => 'LBL_SHORT_DESCRIPTION',
    'type' => 'varchar',
    'source' => 'non-db',
);

Я также попытался получить краткое описание, проходящее через логические перехватчики (вдохновленные в custom / modules / Companies:

class ListViewLogicHook{

    //echo 'this is a test';
    public function getListValue(&$bean, $event, $arguments){
        if($this->bean->description){
            echo "this is a test";
            $bean->short_description = substr($bean->description, 0, 10); 
        }
        echo 'this is a test';
    }
}

и

в custom / modules / logic_hooks.php:

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

Я также знаю, что может быть возможность просто использовать smarty php в listviewdefs.php (custom / modules / Companies / metadata /) и вставьте ключ 'customCode', но при вводе

  'DESCRIPTION' => 
  array (
    'type' => 'text',
    'studio' => 'visible',
    'label' => 'LBL_DESCRIPTION',
    'sortable' => false,
    'width' => '10%',
    'default' => true,
    'customCode' : '{$description|substr:0:5}',
  ),

(пробовал то же самое с "$ short_description") тоже ничего не происходит.

Так что кто-нибудь знает полезный ресурс для обученияо том, как разумно настроить редактирование, детализацию или просмотр списка в соответствии с настраиваемыми полями?

...