předání session do factories
- Filip111
- Člen | 244
Ahoj, narazil jsem na problém a nevím jestli je to řešitelné pomocí konfigurace. Mám službu, které předávám dvě komponenty. Tyto komponenty jsou vytvořené pomocí factories v konfigu. Problém je, že jim potřebuju předat službu session a nevim, jestli ji mám v okamžiku vytváření instancí komponent k dispozici.
Konkrétně:
common:
factories:
orderStep1:
class: web123\Eshop\OrderStepCustomer
orderStep2:
class: web123\Eshop\OrderStepRecap
arguments: [@session]
services:
orderSteps:
class: web123\Eshop\StepManager
arguments: [@session, [@orderStep1, @orderStep2]]
V konstruktoru OrderStepRecap očekávám service session, ale laďenka
křičí, že nic nedostala.
Jedna otázka je, zda to zapisuji v konfiguráku správně,
druhá otázka je zda to může fungovat – pro vytvoření service orderSteps
potřebuju komponenty, které potřebují service session…jenže v tomto
okamžiku ještě není vytvořen container se službou session
(nebo ano?).
Díky.
- nanuqcz
- Člen | 822
Ahoj, služby v DI Nette se vytvářejí lazy až když jsou potřeba, tzn většinou až za běhu aplikace (to už by session měla být vytvořená). Zkus ten config.neon přepsat do novější syntaxe (nevím, jestli je ta stará ještě podporovaná, ale podle všeho asi ne):
common:
factories:
orderStep1:
class: web123\Eshop\OrderStepCustomer
orderStep2:
class: web123\Eshop\OrderStepRecap(@session)
services:
orderSteps:
class: web123\Eshop\StepManager(@session, [@orderStep1, @orderStep2])
- Filip111
- Člen | 244
Fungují oba dva zápisy – a díky lazy vytváření services to
překvapivě funguje.
Problém byl nakonec jinde – komponenta OrderStepRecap
vytváří ještě jednu komponentu s formulářem a tam jsem si session
zapomněl předat.
(je zajímavý, že sám jsem do toho koukal asi 2 hodiny a až když se
člověk zeptá, najde řešení).
Díky.