Prepsani existujici service (Nette\Http\User)
- Elijen
- Člen | 171
Zdravim,
je mozne nejakym zpusobem docilit toho, abych mohl v DI Containeru vytvorit
tovarnicku pro vlastni sluzbu se jmenem „user“? V soucasne chvili mi to po
pridani createServiceUser()
hazi InvalidStateException
s hlaskou „Service ‚user‘ has already been registered.“
Zkousel jsem najit, kde je nastavene, ze se ma sluzba user nacitat pri startu
aplikace, ale marne. Tovarnicku potrebuji mit v containeru a potrebuji v ni
predat zavislosti ⇒ neni mozne pouzit services.user.class
pripadne services.user.factory
v configu.
Lze toto nejak ciste vyresit aniz bych zasahoval primo do samotneho frameworku? Jeste je moznost sluzbu prejmenovat, ale jelikoz je to nahrada za stavajici Nette\Http\User nedava moc smysl mit zaregistrovane sluzby obe.
Predem diky za pomoc :)
- Elijen
- Člen | 171
- Podedit by to nejspis slo a asi to tak nakonec udelam, ale to stale neresi muj problem s tovarnickou sluzby. (vznikne nova trida dedici od Nette\Http\User)
- Trochu problem je, ze potrebuju sluzbu definovat v containeru a nevim kde bych tedy mohl removeService()/addService() zavolat
- Filip Procházka
- Moderator | 4668
22 napsal(a):
…
Chtěl přepsat…
services:
user:
factory: MyUser::init
options:
- aaa
- bbb
- hAssassin
- Člen | 293
Zdravim, pokousim se o neco podobnyho, ikdyz ne s User ale s Application. Bohuzel kdyz mam configu:
application:
class: MyApplication
tak to rve, ze tomu chybi parametr $context
, coz je sice hezky,
ale nejak netusim jak v configu definovat jako parametr samotny context, pokud
to tedy vubec jde. Zatim to teda mam takhle:
$container->addService('application', function($container) {
return new MyApplication($container);
});
coz sice funguje, ale rad bych vedel jestli to nejde definovat i v configu. Diky.
- Patrik Votoček
- Člen | 2221
V configu to „nejde“ (jde to pokud si $context
nadefinuješ
jako službu – alias).
$container->addService('context', function($container) {
return $container;
});
a pak:
application:
class: MyApplication
arguments: [@context]
Nicméně spíš bych ti radil udělat si třeba do MyApplication továrničku ve stylu https://api.nette.org/…tor.php.html#309
- hAssassin
- Člen | 293
@David Grudl > jj, napadlo me zkusit oboji, ale ani jedno nefungovalo. Posledni verzi myslis asi tu gitu, ze? Mam 2.0beta (php 5.3) z 28.5.11 a tam mi to nejde. Mam to v konfigu takto:
application:
class: MyApplication
arguments: ['@container']
Sranda je ze treba pro sluzbu user
to @user
zna… :)