Vlastní PresenterFactory v Nette 2.0.10
- nanuqcz
- Člen | 822
Ahoj,
snažím se napsat si vlastní PresenterFactory, ale nemůžu donutit Nette, aby
ho použil namísto výchozího.
# config.neon
common:
nette:
presenterFactory:
class: MyPresenterFactory
# MyPresenterFactory.php
class MyPresenterFactory extends Nette\Application\PresenterFactory
{
public function __construct()
{
die('MyPresenterFactory::__construct()');
}
}
Ale žádný die('MyPresenterFactory::__construct()');
se
neprovede. Temp jsem mazat zkoušel :-)
Byla tato feature z Nette odstraněna? Protože podle dokumentace by to mělo fungovat…
Díky
- enumag
- Člen | 2118
@nanuqcz: Do sekce nette:
patří
základní (high-level) konfigurace, tedy třeba údaje pro připojení
k databázi. A není to nette.database
, ale
nette: \n database: \n ...
. Pokud bys ale chtěl např. vyměnit
třídu Connection za vlastní implementaci, musel bys to udělat low-level,
takhle:
services:
nette.database.default:
class: MyConnection
Tím chci jen ukázat že nette.database v services je také. Jo a
mimochodem nepleť si ty tečky a dvojtečky, ta tečka nemá pro neon
absolutně žádný význam, respektive stejný jako libovolné písmeno název
služby je „nette.presenterFactory“ – nejde to nijak dělit na
části. To nette.
je jen prefix (namespace), který
znamená, že tu službu vytvořilo NetteExtension.
- castamir
- Člen | 629
Je to maličko matoucí a to vzhledem k použití u parametrů
parameters:
database:
driver: mysql
host: ...
user: ...
a přístup ke konkrétním prvkům parametru database
nette:
database:
user: %database.user%
tadu to skutečně vypadá, že database
není jen prefix.
Jasně, k parametrům se přistupuje přes %% a k ostatnímu (služby) přes
@, ale ne každému to hned dojde ;)
- enumag
- Člen | 2118
@castamir: Tak jistě. :-D Mi to došlo až když jsem studoval jak funguje CompilerExtension.
@nanuqcz: Doporučuji ti nastudovat si kód
NetteExtension a naučit se psát vlastní rozšíření. ;-)
Jo a nenech se zmást tím, že některé služby nette (jako router nebo user)
nemají ten nette prefix – to má čistě historický důvod a bude se
to měnit.
Editoval enumag (13. 4. 2013 22:50)