Získávání závislostí ve formFactory
- Michal Florian
- Člen | 2
Ahojte, mám problém se získáváním závislosti v jedné mojí továrničce. Zkoušel jsem to dvěma způsoby (viz níže)
final class SignFormFactory extends BaseFormFactory
{
/** @var User */
protected $user;
/** @var UserFacade */
protected $userFacade;
public function setUser(User $user, UserFacade $userFacade)
{
$this->userFacade = $userFacade;
$this->user = $user;
}
public function injectUser(User $user, UserFacade $userFacade)
{
$this->userFacade = $userFacade;
$this->user = $user;
}
Mohli byste mi prosím říct, proč mi ani setter, ani inject* závislost nepředá?
- Michal Florian
- Člen | 2
Oli napsal(a):
Jsem na mobilu, takze ve zkratce: použij constructor :)
No konstruktorem předávám taky nějaké závislosti. Ještě přída dědí od BaseFormFactory, tak jsem v tom konstruktoru nechtěl přenášet 5 věcí.
- CZechBoY
- Člen | 3608
Tak spíš do tý BaseFactory si předej závislosti setterem/injekcí.
Pomůže ti rozšíření decorator
https://www.tomasvotruba.cz/…re-in-nette/
- David Grudl
- Nette Core | 8227
Dědit od BaseFormFactory zavání. Místo dědičnosti si ji předávej jako závislost v SignFormFactory a máš po problémech.
- Šaman
- Člen | 2663
Konkrétně třeba takhle.
Je tam FormFactory
, což je asi tvoje BaseFormFactory
,
která řeší třeba nastavení rendereru.
Ale konkrétní XxxFormFactory od ní nedědí, jen si ji vyžádají a nechají
si od ní vytvořit základní kostru formuláře, kterou dál
zpracovávají.
(Těch událostí beforeSave apod. si nevšímej, nesouvisí se
závislostmi.)