Jak zpřístupnit RobotLoader třídě, která není presenter ani komponenta?

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

Pěkné odpoledne,
nevíte, jestli (jak) se dá udělat, aby se nějaká třída, konkrétně Route, dostala k RobotLoaderu?
Chci zkusit podědit nějakou MyRoute, která bude umět na požádání i ověřit, jestli takový presenter skutečně existuje. Přes RobotLoader by to šlo myslím snadno, ale jak je skamarádit?

Jinak funguje mi alternativní řešení (vyjmenovat v routě možné hodnoty pro existující presentery bez jednoho, a druhou routou poslat vše ostatní tomu zbylému), ale ptám se i proto, že mi není jasné, jakým způsobem kromě inject() můžu dostat službu z kontejneru, jak se k němu mimo presentery vlastně dostanu.
Děkuju za případné rady (a trpělivost s mými začátečnickými dotazy).

llook
Člen | 407
+
0
-

Nestačí ti class_exists?

pekelnik
Člen | 462
+
0
-

Odpovídám z trolejbusu ale v současné verzi nette je možné přidat služby za běhu . Čili by se dal třeba v bootrapu přidat robot loader jako služba do containeru.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

@pekelnik Prakticky se dají přidat za jízdy, že :) ?

Majkl578
Moderator | 1364
+
0
-

Jen pozor, na službách, přidaných během runtime, nejde aplikovat autowiring.

Tori
Člen | 32
+
0
-

llook napsal(a):

Nestačí ti class_exists?

No, vlastně asi jo. Děkuju, asi už podvědomě čekám něco rafinovaně složitého.

pekelnik
Člen | 462
+
0
-

Btw. presence presenteru se ověřuje při vytváření odkazu tak či tak…

Tori
Člen | 32
+
0
-

@pekelnik: Já to myslela stejně jako v tomhle vlákně: https://forum.nette.org/…-routach-dal – tj. aby router v případě, že routa vyhovuje, ale neexistuje třída presenteru, pokračoval na další routy.

pekelnik
Člen | 462
+
0
-

@Tori: v tomto případě jediné co potřebuješ je transformovat $presenterName na $presenterClass a pak skutečně vystačíš s class_exists($presenterClass, TRUE) někde ve FILTER_IN callbacku…

Editoval pekelnik (14. 3. 2013 22:58)

Tori
Člen | 32
+
0
-

Nakonec to bylo trapně jednoduché – jelikož stejně používám překladovou tabulku z URL na název presenteru, tak jsem jen doplnit Route::STRICT a stačilo. Dostupné/existující presentery jsou vlastně vyjmenované v té tabulce, takže nebylo potřeba ani kontrolovat existenci třídy.