Kdyby/Doctrine, PostLoad event

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Azathoth
Člen | 495
+
0
-

Pokouším se napojit nějaké listenery na postLoad event, bohužel se mi to vůbec nedaří.
V PHPstormu mám nainstalovanou extension kdyby/events, ale ta mi postLoad vůbec nenašeptává.

Takhle vypadá můj listener:

class PrivilegesListener extends Object implements Subscriber {

	/**
	 * Returns an array of events this subscriber wants to listen to.
	 *
	 * @return array
	 */
	public function getSubscribedEvents()
	{
		return ["Doctrine\ORM\Events::postLoad"];
	}

	public function postLoad($args)
	{
		Debugger::barDump($args);
//		throw new \Exception("post load started");
	}
}

a je správně zaregistrovaný v configu

events:
	subscribers:
		- App\Model\PrivilegesListener

Bohužel se nic nedumpne, i když se z doctrine tahá entit hodně.
Co dělám špatně?
Případně jaký event se vyvolá, když vytáhnu přes doctrine z databáze nějakou entitu?

David Matějka
Moderator | 6445
+
+3
-

ten NS je Doctrine\ORM\Event, ne Events, viz https://github.com/…e/Events.php#L27

radeji pouzij ty class constanty a je to ;)

Filip Procházka
Moderator | 4668
+
+1
-

Máš tam na to konstanty, které můžeš použít.

public function getSubscribedEvents()
{
	return [Kdyby\Doctrine\Events::postLoad];
}

A kdyby/events obsahují panel do tracy debug baru. Když ho zapneš, bude vidět jaké se volají eventy v aplikaci a jaké listenery poslouchají na jaké eventy.

events:
	debugger: on

Ale vykresluje hodně informací, takže na normální vývoj (když zrovna neladíš) tak bych ho doporučoval mít nastavenej na count a zapínat celej panel jen když něco nefunguje.

Azathoth
Člen | 495
+
0
-

á, ty konstanty se hodí, díky.
V debuggeru mám eventy zapnuté, ale postLoad tam nikde nevidím :(
i když se na každé stránce vytahuje z entitymanageru přihlášený uživatel (používám od Majkla DoctrineIdentity) a pomocí dql načítám na každé stránce několik entit.

Azathoth
Člen | 495
+
0
-

díky moc, tak už to funguje. bylo to v tom špatném názvu třídy.