Artykuł opisuje sposoby tworzenia pól z poziomu skryptu
Każde pole powinno być przypisane do bloku, zatem w pierwszej kolejności należy stworzyć instancję Bloku:
$blockInstance = \vtlib\Block::getInstance($blockId, $moduleId);
Posiadając instancję bloku możemy utworzyć obiekt Pola:
$fieldInstance = new \vtlib\Field();
Własności instancji $fieldInstance:
public $id; public $name; public $tabid = false; public $label = false; public $table = false; public $column = false; public $columntype = false; public $helpinfo = ''; public $summaryfield = 0; public $header_field = false; public $maxlengthtext = 0; public $maxwidthcolumn = 0; public $tabindex = 0; public $masseditable = 1; // Default: Enable massedit for field public $uitype = 1; public $typeofdata = 'V~O'; public $displaytype = 1; public $generatedtype = 1; public $readonly = 0; public $visible = 0; public $presence = 2; public $defaultvalue = ''; public $maximumlength; public $sequence = false; public $quickcreate = 1; public $quicksequence = false; public $info_type = 'BAS'; public $block; public $fieldparams = ''; public $color = ''; public $icon = '';
$moduleModel = \Vtiger_Module_Model::getInstance('Contacts'); //Instancja modułu 'Kontakty' $blockInstance = $moduleModel->getBlocks()['LBL_CONTACT_INFORMATION']; //Pobieramy instancję bloku na podstawie etykiety (może być również pobrana na podstawie ID)
$fieldInstance = new \vtlib\Field(); //tworzymy instancję pola i uzupełniamy właściwości $fieldInstance->name = 'picklist'; $fieldInstance->label = 'FL_CUSTOM_PICKLIST'; $fieldInstance->columntype = 'string(255)'; $fieldInstance->uitype = 15; $fieldInstance->maximumlength = 255;
$blockInstance->addField($fieldInstance); // dodajemy obiekt Pola do obiektu Bloku $fieldInstance->setPicklistValues([ 'street', 'home', 'flat', 'city', 'zip-code', ]); //uzupełniamy wartości dla pola słownikowego