Tvorba komponent s využitím autowiringu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Climber007
Člen | 105
+
0
-

Ahoj,
překopávám aplikaci a začleňuji do ní komponenty s automatickým předáváním závoslostí. To používám přesně podle návodu už dlouhou dobu. Bohužel na tomto projektu se mi do komponenty předává něco, o co jsem se nikde nežádal (a Nette snad taky ne).

Mám komponentu přihlašovacího formuláře signInControl. Všechno dělám standardně, ale Nette ji do konstruktoru nevkládá správný presenter, ale presenter, který je konfigurován v config.neon takto :

services:
    InstallPresenter:
        class: App\FrontModule\Presenters\InstallPresenter
        setup:
            - setPathes(%tempDir%, %wwwDir%)

Čím je to prosím nejspíše způsobeno?

David Kudera
Člen | 455
+
0
-

Úplně si nemyslím, že by se komponentám měl předávat presenter. Pokud je ale presenter potřeba, tak by se měla využít metoda attached. Když už ale potřebuji někde nutně injectnout presenter, tak se injectne celá application a z ní potom vytáhnu presenter

David Matějka
Moderator | 6445
+
+3
-

mas v te komponente vlastni konstruktor? jinak v masteru by to melo byt opravene

Climber007
Člen | 105
+
0
-

Konstruktor v ní nemám, nic ji nepředávám. je to jen přihlašovací formulář – $user si bere z presenteru, víc není potřeba. Zkusím master, zatím jedu na Nette 2.2.2.

David Matějka
Moderator | 6445
+
0
-

staci pridat prazdny konstruktor

public function __construct()
{
	parent::__construct();
}
David Kudera
Člen | 455
+
0
-

jde právě o to, že konstruktor parenta očekává presenter a nette ho zkousí injectnout