Fehler beim Speichern der Vorlage

Hooks ermöglichen Ihnen die Ausführung beliebigen PHP-Codes während des Speicherns, Parkens, Veröffentlichens und Löschens jeglicher Inhaltstypen in webEdition.
Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Fehler beim Speichern der Vorlage

Beitragvon blickfang » Mo 13. Feb 2012, 13:09

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!
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Fehler beim Speichern der Vorlage

Beitragvon mokraemer » Mo 13. Feb 2012, 15:42

welche Version?
webEdition-Kern-Entwickler

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Fehler beim Speichern der Vorlage

Beitragvon blickfang » Mo 13. Feb 2012, 17:23

6.2.6.0
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Fehler beim Speichern der Vorlage

Beitragvon mokraemer » Mo 13. Feb 2012, 20:01

ä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.
webEdition-Kern-Entwickler

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Fehler beim Speichern der Vorlage

Beitragvon blickfang » Di 14. Feb 2012, 09:25

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:

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.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Fehler beim Speichern der Vorlage

Beitragvon mokraemer » Di 14. Feb 2012, 12:32

hmm. ok, schau ich mir mal an.
webEdition-Kern-Entwickler

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Fehler beim Speichern der Vorlage

Beitragvon mokraemer » Di 14. Feb 2012, 12:42

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:

Code: Alles auswählen

$this->errStr='';
...
//execute custom Hook
...
return ($this->errStr == '');
Der Hook gibt also genau dann Fehler zurück wenn im Err-Str. was steht.
webEdition-Kern-Entwickler

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Fehler beim Speichern der Vorlage

Beitragvon blickfang » Di 14. Feb 2012, 13:49

habe den hook nach Deinem Beispiel nun so erweitert:

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

}
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.
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Fehler beim Speichern der Vorlage

Beitragvon mokraemer » Di 14. Feb 2012, 19:08

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.
webEdition-Kern-Entwickler

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Fehler beim Speichern der Vorlage

Beitragvon blickfang » Mi 15. Feb 2012, 10:47

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...".
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Fehler beim Speichern der Vorlage

Beitragvon blickfang » Do 16. Feb 2012, 20:36

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.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Fehler beim Speichern der Vorlage

Beitragvon mokraemer » Fr 17. Feb 2012, 02:49

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.
webEdition-Kern-Entwickler

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Fehler beim Speichern der Vorlage

Beitragvon blickfang » Fr 17. Feb 2012, 13:38

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

Code: Alles auswählen

function weCustomHook_save($param) {

}
siehe da - keine Fehlermeldungen mehr beim Speichern von Dokumenten und Vorlagen. Steht das irgendwo geschrieben das es die Funktion unbedingt geben muss?
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Fehler beim Speichern der Vorlage

Beitragvon mokraemer » Fr 17. Feb 2012, 18:31

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:

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;
			}
Und bitte wieso sollte dies false zurückliefern? Irgendwo muß da bei dir was gemacht werden.
webEdition-Kern-Entwickler

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Fehler beim Speichern der Vorlage

Beitragvon blickfang » Fr 17. Feb 2012, 20:44

final haben wir nun alle sampleHook Dateien in customHooks übernommen und der customHook mit prePublish sieht so aus:

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');     
}
aktuell werden damit keine Fehler mehr ausgegeben. Einen Aufruf

Code: Alles auswählen

$hook = new weHook('save'....
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


/**
 * 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.


Zurück zu „Hooks“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste