Tworzenie pola z poziomu skryptu

Artykuł opisuje sposoby tworzenia pól z poziomu skryptu

1. Tworzenie instancji bloku

Każde pole powinno być przypisane do bloku, zatem w pierwszej kolejności należy stworzyć instancję Bloku:

$blockInstance = \vtlib\Block::getInstance($blockId, $moduleId);
  • $blockId - id bloku
  • $moduleId - id modułu

2. Tworzenie obiektu pola

Posiadając instancję bloku możemy utworzyć obiekt Pola:

$fieldInstance = new \vtlib\Field();

3. Dodanie obiektu pola do bloku

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 = '';

4. Przykład tworzenia pola słownikowego:

$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
  • Thursday, 05 May 2022