Come creare una view custom di tipo Edit in SugarCRM CE 6.5 o SuiteCRM

Scritto lunedì 08 luglio 2019

In​ SugarCRM CE 6.5 o in SuiteCRM​ esiste la maschera EditView standard che consente di inserire/modificare un oggetto di un determinato modulo, inoltre esiste la QuickCreate che può essere utilizzata per inserire rapidamente un oggetto.

Queste due maschere di tipo Edit sono standard e facilmente gestibili da Studio.

A volte però può essere utile creare una view custom di tipo Edit per gestire inserimenti/modifiche personalizzati da utilizzare in casi specifici.

Per ottenere questo servono 3 passi:

  1. creare la view in custom/modules/<module_name>/views/view.<view_name>.php;
  2. attivare la view all'interno di custom/modules/<module_name>/controller.php;
  3. definire la view in custom/modules/<module_name>/metadata/<view_name>viewdefs.php.

Dopo un “Ripara velocemente e Ricostruisci“, hai la possibilità di chiamare la view con un link di questo tipo <crmurl>/index.php?module=<module_name>&action=<view_name>&record=<objectid> eventualmente seguito dagli altri parametri che ti servono (gestiti nel file view.<view_name>.php).

Iniziamo con il file custom/modules/<module_name>/views/view.<view_name>.php:

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

class <module_name>View<view_name> extends ViewEdit {
    public function preDisplay() {
        $this->type = '<view_name>';
        parent::preDisplay();
        $this->ev->view = '<view_name>View';
    }

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

Ora esaminiamo il file custom/modules/<module_name>/controller.php:

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

class <module_name>Controller extends SugarController {
    public function action_<view_name>() {
        $this->view = '<view_name>';
    }
}
?>

Infine il file custom/modules/<module_name>/metadata/<view_name>viewdefs.php che avrà la stessa sintassi del file custom/modules/<module_name>/metadata/​editviewdefs.php​:

<?php
$module_name = '<module_name>';
$_object_name = '<object_name>';
$viewdefs [$module_name] = array (
    'EditView' => array (
        'templateMeta' => array (
            'form' => array (
                 'buttons' => array (
                    0 => 'SAVE',
                    1 => 'CANCEL',
                ),
                'headerTpl' => 'include/EditView/header.tpl',
                'footerTpl' => 'include/EditView/footer.tpl',
            ),
            'maxColumns' => '2',
            'widths' => array (
                0 => array (
                    'label' => '10',
                    'field' => '30',
                ),
                1 => array (
                    'label' => '10',
                    'field' => '30',
                ),
            ),
            'useTabs' => false,
            'tabDefs' => array (
                'DEFAULT' => array (
                    'newTab' => false,
                    'panelDefault' => 'expanded',
                ),
            ),
        ),
        'panels' => array (
            'default' => array (
                0 => array (
                    0 => 'name'
                ),
            ),
        ),
    ),
);
?>

In questo esempio abbiamo messo solo il campo “name”, ma naturalmente lo puoi impostare allo stesso modo del file custom/modules/<module_name>/metadata/​editviewdefs.php​.

In questi esempi:

  1. <module_name> significa il nome del modulo, così come lo vedi nell'URL, ad esempio, Contacts, Leads, Accounts, ecc.
  2. <view_name> significa il nome della vista, ad esempio editview, detailview, ecc.
  3. <object_name> significa il nome dell'oggetto, ovvero come il modulo si chiama sul database, per esempio, contacts, leads, accounts, ecc.

Problemi? Contattaci per una consulenza professionale su SugarCRM CE o SuiteCRM.