265
edits
Gschratzer (talk | contribs) No edit summary Tag: 2017 source edit |
Gschratzer (talk | contribs) No edit summary Tag: 2017 source edit |
||
| Line 71: | Line 71: | ||
[[File:warning.png]] Achtung: Vergessen Sie nicht, Ihr Modul in der Modulverwaltung zu deaktivieren und dann wieder zu aktivieren, damit die Änderung wirksam wird, denn die Speicherung der zu verwaltenden "Modul-Hooks"-Paare erfolgt in der Datenbank, die erst bei der Aktivierung des Moduls aktualisiert wird. | [[File:warning.png]] Achtung: Vergessen Sie nicht, Ihr Modul in der Modulverwaltung zu deaktivieren und dann wieder zu aktivieren, damit die Änderung wirksam wird, denn die Speicherung der zu verwaltenden "Modul-Hooks"-Paare erfolgt in der Datenbank, die erst bei der Aktivierung des Moduls aktualisiert wird. | ||
2. Um eine vorhandene Funktion durch Ihre zu ersetzen (Überladung) | |||
Erstellen Sie '''/htdocs/ yourmodulename /class/actions_ yourmodulename .class.php''' in Ihrem Modul mit Code, der die vom Hook aufgerufene Methode enthält (der Name dieser Methode kann beim Aufruf von executeHooks gesehen werden). Hier ist ein Beispiel: | |||
<source lang=php> | |||
class ActionsYourModuleName | |||
{ | |||
/** | |||
* Überladen der doActions-Funktion: Ersetzen der übergeordneten Funktion durch die untere | |||
* | |||
* @param array() $parameters Hook-Metadaten (Kontext usw.) | |||
* @param CommonObject &$object Das zu verarbeitende Objekt (eine Rechnung, wenn Sie sich im Rechnungsmodul befinden, eine propale im propale-Modul usw.) | |||
* @param string &$action Aktuelle Aktion (falls gesetzt). Im Allgemeinen erstellen oder bearbeiten oder null | |||
* @param HookManager $hookmanager Hook-Manager, der weitergegeben wird, um das Aufrufen eines anderen Hooks zu ermöglichen | |||
* @return int < 0 bei Fehler, 0 bei Erfolg, 1, um Standardcode zu ersetzen | |||
*/ | |||
function doActions( $parameters , & $object , & $action , $hookmanager ) | |||
{ | |||
$error = 0 ; // | |||
Fehlerzähler $myvalue = 'test' ; // Ein Ergebniswert | |||
print_r ( $parameter ); | |||
Echo "Aktion: " . $aktion ; | |||
print_r ( $Objekt ); | |||
if ( in_array ( 'somecontext' , explode ( ':' , $parameters [ 'context' ]))) | |||
{ | |||
// mache etwas nur für den Kontext 'somecontext' | |||
} | |||
if ( ! $error ) | |||
{ | |||
$this -> results = array ( 'myreturn' => $myvalue ); | |||
$this -> resprints = 'Ein Text zum Anzeigen' ; | |||
0 zurückgeben ; // oder 1 zurückgeben, um den Standardcode zu ersetzen } else { $this -> errors [] = 'Fehlermeldung' ; Rückkehr - 1 ; } } } | |||
</source> | |||
Die Methode wird dann automatisch aufgerufen, wenn der Code aufgerufen wird, der die executeHooks enthält, die Ihren Code mit den Elementen $parameters, $object und $action versorgen. | |||
;Mit: | |||
*'''$parameters''' ist ein Array von Metadaten, die die Hook-Daten sammeln (ihr Kontext ist über $parameters['context'] zugänglich, aber andere Informationen können je nach Fall verfügbar sein) | |||
*'''$object''' ist das Objekt, an dem Sie arbeiten möchten (z. B. Produkt für den Produktkartenkontext) | |||
*'''$action''' bezeichnet die auszuführende Aktion (z. B. „Erstellen“, „Bearbeiten“ oder „Anzeigen“). | |||
*'''$hookmanager''' wird nur weitergegeben, damit Ihr Hook andere Hooks aufrufen kann. | |||
;Rückgaben: | |||
*Der Returncode eines Hooks muss im Erfolgsfall 0 oder 1 sein, im Fehlerfall negativ. Im Allgemeinen wird es 0 sein. Es kann 1 sein, was in einigen Fällen bedeutet, dass das, was Ihr Hook tut, vollständig überschreibt, was Dolibarr tun musste, direkt nachdem der Hook aufgerufen wurde. Wenn der Code negativ ist, ist es möglich, dem Benutzer eine Fehlermeldung bereitzustellen, indem $this->errors[]='Error message' gesetzt wird. | |||
*Wenn die Methode die Eigenschaft $this->results mit einem Array setzt, dann wird das Array $hookmanager->resArray automatisch mit dem Inhalt dieses Arrays angereichert, der später wiederverwendet werden kann. | |||
*Wenn die Methode die Eigenschaft $this->resprints mit einem String setzt, dann wird dieser String vom Hook-Handler (executeHook) sofort angezeigt, wenn Ihre Methode beendet wird. | |||
*Ihr Hook kann auch die Werte von $object und $action ändern. | |||
==Liste der in Dolibarr verfügbaren Hooks== | |||
Finden Sie die verfügbaren Hooks in Dolibarr? Suchen Sie im Quellcode nach '''"executeHooks(" und Sie werden leicht alle bereits implementierten Funktionen finden.''' | |||
Hier ist eine (nicht vollständige) Liste : [[:Category:Hooks]] ... | |||
Anmerkung: Bitte beachten Sie, dass diese Liste mit jeder Version erweitert wird. Wenn Sie also wirklich wissen wollen, ob ein bestimmter Hook oder Kontext existiert, suchen Sie bitte direkt im Quellcode mit der oben beschriebenen Methode. | |||
==Liste der in Dolibarr verfügbaren Contexts== | |||
==Siehe auch== | |||
edits