Come creare una view custom di tipo Edit in SugarCRM CE 6.5 o SuiteCRM
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:
- creare la view in custom/modules/<module_name>/views/view.<view_name>.php;
- attivare la view all'interno di custom/modules/<module_name>/controller.php;
- 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:
- <module_name> significa il nome del modulo, così come lo vedi nell'URL, ad esempio, Contacts, Leads, Accounts, ecc.
- <view_name> significa il nome della vista, ad esempio editview, detailview, ecc.
- <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.