Entwickler, der außergewöhnliche CRM- und Laravel-Lösungen liefert

Als erfahrener Entwickler spezialisiere ich mich auf Laravel- und Vue.js-Entwicklung, die Implementierung von Vtiger CRM sowie auf vielfältige WordPress-Projekte. Meine Arbeit zeichnet sich durch kreative, dynamische und benutzerzentrierte Weblösungen aus, die individuell an die Bedürfnisse meiner Kunden angepasst werden.

Viele Entwickler und Programmierer fragen sich: "Wie verknüpfen wir Module in Vtiger CRM miteinander?" Die gängigste Beziehung zwischen Modulen ist die One-to-Many-Verknüpfung. Dabei enthält die Hauptmodulkarte (Elternmodul) ein Feld, über das Sie einen Datensatz des untergeordneten Moduls auswählen können.

Funktionen zur Erstellung einer One-to-Many-Beziehung in Vtiger CRM

Viele Entwickler und Programmierer fragen sich: "Wie verknüpfen wir Module in Vtiger CRM miteinander?" Die gängigste Beziehung zwischen Modulen ist die One-to-Many-Verknüpfung. Dabei enthält die Hauptmodulkarte (Elternmodul) ein Feld, über das Sie einen Datensatz des untergeordneten Moduls auswählen können. Im untergeordneten Modul gibt es dann eine Registerkarte, über die alle mit diesem Datensatz verknüpften Einträge angezeigt werden.

Um eine One-to-Many-Beziehung in Vtiger CRM korrekt zu implementieren, müssen zwei wesentliche Aufgaben erledigt werden:

  1. Im ersten Modul erstellen Sie ein Feld, das die Beziehung zum untergeordneten Modul herstellt.
  2. Im zweiten Modul richten Sie eine „Related List“ ein, mit der Sie alle Einträge sehen, die über das Beziehungfeld verknüpft wurden.

Im Folgenden zeige ich Ihnen anhand zweier Funktionen, wie Sie diese Beziehung programmatisch herstellen können. Diese Funktionen können beispielsweise in benutzerdefinierten Skripten oder Funktionen verwendet werden, um die Einrichtung der Beziehung zu automatisieren.

Erstellen der Beziehungen – createRelationship

Die Funktion createRelationship dient dazu, im Hauptmodul (module1) ein neues Feld anzulegen, das mit einem Datensatz des untergeordneten Moduls (module2) verknüpft ist. Das neue Feld ermöglicht es, Datensätze aus dem zweiten Modul auszuwählen und sie im ersten Modul zu speichern. Beispielsweise wird ein Feld im Format „cf_potentials_id“ erstellt, wenn das Child-Modul „Potentials“ heißt.

Der Funktionscode sieht wie folgt aus:


public function createRelationship($module1, $module2, $fieldLabel)
{
include_once "vtlib/Vtiger/Module.php";
$block = 'LBL_CUSTOM_INFORMATION';
$module = Vtiger_Module::getInstance($module1);
$module1Class = Vtiger_Module::getClassInstance($module1);
$block1 = Vtiger_Block::getInstance($block, $module);
$columnName = "";
// Falls eine Listenaktion gewünscht ist, kann ein zufälliger Zahlenanteil angehängt werden:
if ($actionRelatedList == true) {
$columnName = "cf_nrl_" . strtolower($module2) . rand(1, 1000) . "_id";
} else {
$columnName = "cf_" . strtolower($module2) . "_id";
}

$fieldName = $columnName;
$field1 = new Vtiger_Field();
$field1->label = $fieldLabel;
$field1->name = $fieldName;
$field1->table = $module1Class->table_name;
$field1->column = $fieldName;
$field1->generatedtype = 2;
$field1->columntype = "INT(10)";
$field1->uitype = 10;
$field1->typeofdata = "I~O";
$field1->quickcreate = 2;
$field1->sequence = 7;

$block1->addField($field1);
$field1->setRelatedModules(array($module2));
$block1->save($module);

return $field1->id;
}

Parameter der Funktion:
 • module1 – Das Hauptmodul, in dem das neue Beziehungfeld erstellt wird.
 • module2 – Das Modul, mit dem Sie die Beziehung herstellen möchten.
 • fieldLabel – Die Bezeichnung, mit der das neue Feld im Formular angezeigt wird.
(wichtig: Es empfiehlt sich, die Feldnamen zunächst in Englisch zu wählen und später mittels Übersetzungsdateien anzupassen).

Nachdem diese Funktion im Hauptmodul ausgeführt wurde, wird ein neues Feld erstellt, mit dem Sie Datensätze aus dem zweiten Modul verknüpfen können.

Erstellen der zugehörigen Liste – addRelatedList

Um im untergeordneten Modul (module2) alle verknüpften Datensätze übersichtlich anzuzeigen, müssen Sie eine Related List einrichten. Die folgende Funktion fügt dem untergeordneten Modul über den Hauptmodul einen neuen relativen Listenreiter hinzu:



public function addRelatedList($module1, $module2, $relListLabel, $actions)
{
include_once "vtlib/Vtiger/Module.php";
$module = Vtiger_Module::getInstance($module2);
$module->setRelatedList(
Vtiger_Module::getInstance($module1),
$relListLabel,
$actions,
"get_dependents_list"
);
}

Parameter der Funktion:
 • module1 – Das Modul, in dem die verknüpften Datensätze ausgewählt wurden.
 • module2 – Das Modul, in dem das Beziehungfeld erstellt wurde und die verknüpften Datensätze gespeichert sind.
 • relListLabel – Die Überschrift der Related List (in der Regel entspricht dies dem Namen des zweiten Moduls).
 • actions – Ein Array von erlaubten Aktionen in der Related List. Beispielsweise ermöglicht array('add', 'select') dem Benutzer, neue Datensätze hinzuzufügen oder bereits vorhandene auszuwählen.

Hinweis und Sicherheit

Bitte verwenden Sie diese Funktionen auf eigenes Risiko. Da Änderungen in den Modulen und in der Datenbank vorgenommen werden, ist es unerlässlich, vor der Anwendung ein Backup der Datenbank und der relevanten Dateien zu erstellen. Änderungen an der Modullogik sind in den meisten Fällen irreversibel.

Fazit

Die oben vorgestellten Funktionen ermöglichen es Ihnen, in Vtiger CRM eine One-to-Many-Beziehung zwischen zwei Modulen herzustellen. Im ersten Modul wird durch die Funktion createRelationship ein Beziehungfeld angelegt, mit dem Sie Datensätze aus dem zweiten Modul auswählen können. Mit der Funktion addRelatedList wird im untergeordneten Modul eine Related List erstellt, sodass alle Verknüpfungen übersichtlich angezeigt werden.