Vytvoření komponenty v komponentě (DI)
- jbezdicek
- Člen | 13
Ahoj, mam dve komponenty a potrebuju tu druhou vnorit do te prvni … pri pouziti tohoto kodu v prvni komponente:
/** @var iCallToActionControlFactory @inject */
public $iCallToActionControlFactory;
public function createComponentCallToAction()
{
$control = $this->iCallToActionControlFactory->create();
return $control;
}
na radku, kde se vola metoda create() → Call to a member function create() on null
Nejaky tip ?
- jiri.pudil
- Nette Blogger | 1032
Inject anotace afaik fungují jen v presenterech, pokud to explicitně nepovolíš. Předej si tu továrnu standardně v konstruktoru
- jbezdicek
- Člen | 13
jiri.pudil napsal(a):
Inject anotace afaik fungují jen v presenterech, pokud to explicitně nepovolíš. Předej si tu továrnu standardně v konstruktoru
Tak ty jsou ocividne povolene, tech interfacu tam je takhle injectnutych vic … bohuzel tenhle co sem pridal to dela jediny. Asi proto, ze ho jako jediny pouzivam v sablone te komponenty jako
{control callToAction}
- jbezdicek
- Člen | 13
CZechBoY napsal(a):
@jbezdicek Ne, inject je vypnutý v komponentách; v presenterech je zapnutý. Zkoušel jsi to předat přes ten konstruktor?
Bohuzel nic extra :/
Argument 1 passed to App\FrontModule\CartPreviewControl::__construct() must be an instance of ICallToActionControlFactory, none given
Editoval jbezdicek (16. 1. 2017 11:47)
- jbezdicek
- Člen | 13
CZechBoY napsal(a):
A jak vytváříš ten
CartPreviewControl
? Máš na to taky továrnu?
Ano, ten taky vytvarim pomoci tovarny…
akadlec napsal(a):
Máš tu továrnu registrovanou? Dle všecho se ti neregne, takže nejde autowirovat. A nebo máš u ní zakázán autowire.
Ano, je registrovana (respektive je config.neon pod controls:) … autowiring v configu ani najit nemuzu, kazdopadne je nejaky zpusob jak primo zjistit, jestli se zaregistrovala nebo jestli je problem jinde ?
- jiri.pudil
- Nette Blogger | 1032
je nejaky zpusob jak primo zjistit, jestli se zaregistrovala
V debugbaru bys měl mít DIC panel se seznamem služeb v kontejneru.
- jbezdicek
- Člen | 13
jiri.pudil napsal(a):
je nejaky zpusob jak primo zjistit, jestli se zaregistrovala
V debugbaru bys měl mít DIC panel se seznamem služeb v kontejneru.
Tak ted jsem z toho jelen .. vcera mi to hazelo tu chybu s tim, ze v konstruktoru predavam misto instance interfacu null, dneska refreshnu tu samou zalozku a jede to ? Vubec to nechapu, debug mode mam zaply, tak by se nemelo nic cachovat, ne ? :D
- jbezdicek
- Člen | 13
CZechBoY napsal(a):
Cachuje se to, ale občas se cache neinvaliduje bohužel. Je to potom hledání na hodiny :-) nebo prostě smázneš cache Nette.Configurator a počkáš než se přegeneruje DIC.
Pak to vysvetluj klientovi, ze si nad tim stravil nekolik hodin :-)
Kazdopadne vsem diky za rychle odpovedi! :-)