You are not logged in.

  • Login

1

Saturday, December 19th 2009, 7:04pm

WCF: Anderes Template mit EventListener

Hallo,

ich habe versucht ein Template über einen EventListener auszugeben, ohne erfolg. Mein Problem dabei ist, dass dieser EventListener gerade auf "StructuredTemplate::shouldDisplay" greift, da ich ihn auf jeder Seite benötige. Gibt es eventuell eine andere Möglichkeit?


Gruß

2

Sunday, December 20th 2009, 10:43am

Template über Eventlistener ausgeben? Ich weiß leider nicht was du meinst?

PHP Quellcode

1
2
3
4
... implements EventListener {
	public function execute($eventObj, $className, $eventName) {
		echo WCF::getTPL()->fetch('templateFile');
		...


Erläutere doch mal was dein Ziel ist - vielleicht gibts ja einen schöneren Weg.

3

Sunday, December 20th 2009, 1:07pm

Im Prinzip möchte ich, dass ein User, der eine der folgenden Bedingungen unterliegt, eine Seite ausgegeben bekommt und somit nichts mehr machen kann:

- AktivationCode vorhanden,
- ReactivationCode vorhanden oder
- Gesperrt

4

Sunday, December 20th 2009, 2:40pm

Schau dir mal an wie Woltlab die Registrierungsseite gestaltet hat.

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class RegisterPage ...
	public function show() {
		switch ($this->action) {
		case 'enable':
			require_once(WCF_DIR.'lib/form/RegisterActivationForm.class.php');
			new RegisterActivationForm();
			exit;
 
		case 'newActivationCode':
			require_once(WCF_DIR.'lib/form/RegisterNewActivationCodeForm.class.php');
			new RegisterNewActivationCodeForm();
			exit;
 
		case 'reenable':
			require_once(WCF_DIR.'lib/form/EmailActivationForm.class.php');
			new EmailActivationForm();
			...


Du musst also nicht ein "dummes" Template auswerfen, sondern kannst einfach eine Page innerhalb einer Page erzeugen (und danach mit exit beenden)
Und deinen EventListener legst du am besten auf AbstractPage (und AbstractAction?)

Vergiss nicht, dass du keine "Fehlerseite" anzeigst, falls du schon selbst die Fehlerseite bist. Sonst landest du in einer Endlosschleife.

5

Sunday, December 20th 2009, 3:05pm

Danke für den Tipp, werd ich gleich ausprobieren und umsetzen.
Ich wollte eigentlich nicht noch einen EventListener über alle Seiten legen, um die Performance nicht zu beeinträchtigen.

Den aktuelle Benötige ich allerdings auch da, wo er ist.

6

Sunday, December 20th 2009, 6:22pm

Hat funktioniert, danke. Performance ist auch noch super, keine Einschränkungen.

Similar threads

Social bookmarks