Service of type App\Model\UserManager: Parameter $database in __construct() has no class type hint or default

bdinvpvsmvpscuiqpc
Člen | 57
+
0
-

Ahoj, vytvořil jsem si složku Model, kde mám umístěné modely. V modelech mám UserManager. V souboru common.neon jsem ho přidal do služeb. Zobrazuje se mi error: Service of type App\Model\UserManager: Parameter $database in __construct() has no class type hint or default

David Matějka
Moderator | 6445
+
+1
-

Ahoj, jak to píše – musíš uvést typehint v konstruktoru: public function __construct(Nette\Database\Explorer $database)

btw, v tom userExists je zbytečné předávat ten parametr databáze, od toho je právě DI, že si na to sáhneš přes $this->database

bdinvpvsmvpscuiqpc
Člen | 57
+
0
-

Děkuji moc, opraveno.

Nicméně se vyskytl další error: Service 'application.1' (type of App\Presenters\AccountPresenter): Service of type App\Model\UserManager needed by $userManager in __construct() not found. Did you add it to configuration file?

Takto vypadá AccountPresenter: https://pastebin.com/Uj69heiH

Kamil Valenta
Člen | 822
+
0
-

Zkus promazat temp/cache, asi se nesahá na aktuální neon, ve kterém máš App\Model\UserManager registrovanou.

bdinvpvsmvpscuiqpc
Člen | 57
+
0
-

Vyzkoušel jsem to a nepomohlo to.

Kamil Valenta
Člen | 822
+
0
-

A natahuješ určitě ten common.neon, který jsi zde uvedl?
Je v podobě, jakou jsi zde uvedl?

dakur
Člen | 493
+
+4
-

Nevím, nakolik to s tím může souviset, ale ten UserManager extenduje Ui\Presenter, takže je to vlastně presenter, i když ve složce model. Ve skutečnosti by vůbec Presenter extendovat neměl, taky by ale neměl obsahovat tu metodu redirectUser(), protože takové věci se skutečně dělají jen v presenterech.

Editoval dakur (2. 3. 2021 12:03)

bdinvpvsmvpscuiqpc
Člen | 57
+
0
-

Děkuji moc všem za pomoc. Problém jsem vyřešil. Zapomněl jsem předělat proměnnou UserManageru na globální.