Fehler beim Speichern der Vorlage
Fehler beim Speichern der Vorlage
Hallo,
wir haben einen kleinen eigenen Hook geschrieben, der geo-Daten vor dem veröffentlichen eines Objekts hinzufügt. Das funtkioniert wunderbar. Nun bekommen wir jedoch immer beim Speichern einer Vorlage die Meldung "Fehler beim Speichern der Vorlage". Die Vorlage wird aber trotzdem gespeichert - die Meldung nervt - woher kommt das ?
Wenn wir unseren sutomHook entfernen kommt die Meldung immer noch. Nur wenn die gesamten Hooks unter Einstellungen => allgemeine deaktiviert werden kommt die Fehlermeldung nicht mehr? Bug im System?
Dankbar für jegliche Hinweise!
wir haben einen kleinen eigenen Hook geschrieben, der geo-Daten vor dem veröffentlichen eines Objekts hinzufügt. Das funtkioniert wunderbar. Nun bekommen wir jedoch immer beim Speichern einer Vorlage die Meldung "Fehler beim Speichern der Vorlage". Die Vorlage wird aber trotzdem gespeichert - die Meldung nervt - woher kommt das ?
Wenn wir unseren sutomHook entfernen kommt die Meldung immer noch. Nur wenn die gesamten Hooks unter Einstellungen => allgemeine deaktiviert werden kommt die Fehlermeldung nicht mehr? Bug im System?
Dankbar für jegliche Hinweise!
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.
Ehemals im Vorstand des webEdition e.V.
Re: Fehler beim Speichern der Vorlage
6.2.6.0
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.
Ehemals im Vorstand des webEdition e.V.
Re: Fehler beim Speichern der Vorlage
ähm...
wie habt ihr denn sichergestellt das Euer Hook nur auf Objekte wirkt?
Der Hook wird auch beim Speichern einer Vorlage angesprochen - du mußt also vorher unterscheiden um welchem Dokumenttyp es sich handelt.
wie habt ihr denn sichergestellt das Euer Hook nur auf Objekte wirkt?
Der Hook wird auch beim Speichern einer Vorlage angesprochen - du mußt also vorher unterscheiden um welchem Dokumenttyp es sich handelt.
webEdition-Kern-Entwickler
Re: Fehler beim Speichern der Vorlage
hm, bislang wurden nur die Bojekt-Klassen abgeprüft und wenn dasObjekt eine bestimmten Kklasse angehört, dann tue etwas. Wenn nicht, dann tue nichts.
Am Hook selbst sollte es ja aber eigentlich nicht liegen, oder? Das komische ist ja, wenn wir die Datei für den custom Hook koemplett entfernen, hooks aber aktiv lassen, bekommen wir auch einen Fehler beim Speichern von Templates. Werden hooks grundsätzlich deaktiviert - kein Fehler
der Hook in Kürze:
Am Hook selbst sollte es ja aber eigentlich nicht liegen, oder? Das komische ist ja, wenn wir die Datei für den custom Hook koemplett entfernen, hooks aber aktiv lassen, bekommen wir auch einen Fehler beim Speichern von Templates. Werden hooks grundsätzlich deaktiviert - kein Fehler
der Hook in Kürze:
Code: Alles auswählen
function weCustomHook_prePublish($param) {
$object = $param[0];
$type = get_class($object);
switch($type){
case 'we_objectFile':
do_something();
break;
default:
do_nothing();
}
}
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.
Ehemals im Vorstand des webEdition e.V.
Re: Fehler beim Speichern der Vorlage
Also ich hab das gerade mal bei mir ausprobiert, Hooks an, aber kein Hook in irgendeinem Verzeichnis, weder Apps noch custom-Hooks, da gab es keine Fehler.
Die Auswertung des Hooks ist auch recht simpel:
Der Hook gibt also genau dann Fehler zurück wenn im Err-Str. was steht.
Die Auswertung des Hooks ist auch recht simpel:
Code: Alles auswählen
$this->errStr='';
...
//execute custom Hook
...
return ($this->errStr == '');
webEdition-Kern-Entwickler
Re: Fehler beim Speichern der Vorlage
habe den hook nach Deinem Beispiel nun so erweitert:
Bei Speichern eines Objekts alles gut, beim Speichern eines Dokuments oder einer Vorlage => Meldung: Fehler bem Speichern; gespeichert wird aber trotzdem weiterhin korrekt... was ihm nicht paßt schreibt er aber nicht im errStr.
Code: Alles auswählen
function weCustomHook_prePublish($param) {
$object = $param[0];
$object->errStr = '';
$type = get_class($object);
switch($type){
case 'we_objectFile':
do_something();
break;
default:
do_nothing();
}
return ($object->errStr == '');
}
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.
Ehemals im Vorstand des webEdition e.V.
Re: Fehler beim Speichern der Vorlage
Sorry, da hab ich mich falsch ausgedrückt!
Der Hook selbst hat keinen Rückgabewert. Nur falls etwas im errStr steht, der dem Hook-Handler zugeordnet ist (wie gesagt schau dir preSave-Hook an), wird nicht gespeichert und der Fehler ausgegeben.
Der Hook selbst hat keinen Rückgabewert. Nur falls etwas im errStr steht, der dem Hook-Handler zugeordnet ist (wie gesagt schau dir preSave-Hook an), wird nicht gespeichert und der Fehler ausgegeben.
webEdition-Kern-Entwickler
Re: Fehler beim Speichern der Vorlage
hatte schon versucht mir den Error mit dem hookHandler errStr auszugeben - allerdings steht da leider nix drin..
Wenn ein Objekt gespeichert wird kommt keine Fehlermeldung, wenn ein Dokument oder eine Vorlage gespeichert wird wird ein Fehler ausgeworfen, aber kein Error-Text/Info dazu - nur "Fehler beim Speicher der Vorlage...".
Wenn ein Objekt gespeichert wird kommt keine Fehlermeldung, wenn ein Dokument oder eine Vorlage gespeichert wird wird ein Fehler ausgeworfen, aber kein Error-Text/Info dazu - nur "Fehler beim Speicher der Vorlage...".
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.
Ehemals im Vorstand des webEdition e.V.
Re: Fehler beim Speichern der Vorlage
auch wenn ich nicht herausbekommen, warum das Template/Dokument Speichern einen Fehler ausgibt - gibt es denn eine Möglichkeit den Fehler gewaltsam zu unterdrücken indem man beim Hook im Fall es kein Objekt betrifft "return true" oder wie auch immer setzt?
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.
Ehemals im Vorstand des webEdition e.V.
Re: Fehler beim Speichern der Vorlage
Nein, das geht logischerweise nicht. Du wirst den Fehler suchen müssen.
Dein Prepublish-Hook wird sicherlich nicht ausgeführt.
Denn beim Speichern der Vorlage werden zuerst Presave ausgeführt, dann wird alles in die DB gespeichert und die Datei angelegt. Dann wird der Hook Save aufgerufen und zuletzt wird eine neue Version in der Template-Historie erzeugt.
Wenn er bei dir also noch speichert, ist der Hook Save dafür verantwortlich.
Dein Prepublish-Hook wird sicherlich nicht ausgeführt.
Denn beim Speichern der Vorlage werden zuerst Presave ausgeführt, dann wird alles in die DB gespeichert und die Datei angelegt. Dann wird der Hook Save aufgerufen und zuletzt wird eine neue Version in der Template-Historie erzeugt.
Wenn er bei dir also noch speichert, ist der Hook Save dafür verantwortlich.
webEdition-Kern-Entwickler
Re: Fehler beim Speichern der Vorlage
ich habe alle Sample Hooks weggeworfen - kein Ergebnis.
Dann habe ich eine neue Datei mit einem CustomHook für save angelegt, der aber gar nichts
siehe da - keine Fehlermeldungen mehr beim Speichern von Dokumenten und Vorlagen. Steht das irgendwo geschrieben das es die Funktion unbedingt geben muss?
Dann habe ich eine neue Datei mit einem CustomHook für save angelegt, der aber gar nichts
Code: Alles auswählen
function weCustomHook_save($param) {
}
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.
Ehemals im Vorstand des webEdition e.V.
Re: Fehler beim Speichern der Vorlage
irgendwas läuft da bei dir durcheinander.
Falls die Datei nicht vorhanden ist, gibt er true zurück.
=> webEdition/we/include/we_hook/class/weHook.class.php
der Aufruf zu dem Hook lautet:
Und bitte wieso sollte dies false zurückliefern? Irgendwo muß da bei dir was gemacht werden.
Falls die Datei nicht vorhanden ist, gibt er true zurück.
=> webEdition/we/include/we_hook/class/weHook.class.php
der Aufruf zu dem Hook lautet:
Code: Alles auswählen
$hook = new weHook('save', '', array($this, 'resave' => $resave));
$ret = $hook->executeHook();
//check if doc should be saved
if($ret === false){
$this->errMsg = $hook->getErrorString();
return false;
}
webEdition-Kern-Entwickler
Re: Fehler beim Speichern der Vorlage
final haben wir nun alle sampleHook Dateien in customHooks übernommen und der customHook mit prePublish sieht so aus:
aktuell werden damit keine Fehler mehr ausgegeben. Einen Aufruf
usw. gibt es in der Datei nicht?! oder hab ich Dich falsch verstanden? Die Datei sieht so aus (sorry für die Code Menge...) - habe noch zwei andere webEdition Projekte geprüft, da ist das 1:1
Code: Alles auswählen
function weCustomHook_prePublish($param) {
$hookHandler=$param['hookHandler'];
$object = $param[0];
$type = get_class($object);
switch($type){
case 'we_objectFile':
tuelustigesachen();
break;
default:
return true;
}
$hookHandler->setErrorString('Fehler beim Hook prePublish');
}
Code: Alles auswählen
$hook = new weHook('save'....
Code: Alles auswählen
/**
* class to handle hooks in webEdition and in applications
*/
class weHook {
protected $action;
protected $appName;
protected $param;
private $file='';
private $func;
private $errStr='';
function __construct($action, $appName='', $param=array()) {
if (!(defined('EXECUTE_HOOKS') && EXECUTE_HOOKS)) {
return;
}
$this->action = $action;
$this->appName = $appName;
$this->param = $param;
$this->param['hookHandler']=$this;
$this->findHookFile();
$this->func='weCustomHook_' . ($appName != ''?$appName . '_':'') . $action;
}
function executeHook() {
if (!(defined('EXECUTE_HOOKS') && EXECUTE_HOOKS)) {
return true;
}
if ($this->action != '' && is_array($this->param) && $this->file != '') {
include_once($this->file);
if (function_exists($this->func)) {
eval($this->func . '($this->param);');
return ($this->errStr=='');
}
}
return;
}
/**
* get custom hook file
*
* @param string $action
* @param string $appName
*
* return string
*/
function findHookFile() {
$hookFile = '';
if ($this->appName != '') {
$filename = 'weCustomHook_' . $this->appName . '_' . $this->action . '.inc.php';
// look in app folder
$hookFile = WE_TOOLS_DIR . $this->appName . '/hook/custom_hooks/' . $filename;
} else {
$filename = 'weCustomHook_' . $this->action . '.inc.php';
// look in we_hook/custom_hooks folder
$hookFile = WEBEDITION_INCLUDES_DIR . 'we_hook/custom_hooks/' . $filename;
//no more check for sample hooks - they are overwritten on update
}
if (file_exists($hookFile) && is_readable($hookFile)) {
$this->file=$hookFile;
}
}
function setErrorString($str){
$this->errStr=$str;
}
function getErrorString(){
return $this->errStr;
}
}
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.
Ehemals im Vorstand des webEdition e.V.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste