Call to a member function login() on null
- petr_tricek
- Člen | 7
Ahoj,
mám tento kód v BasePresenter ale najednou z ničeho nic mi to začalo hlásit chybu Call to a member function login() on null. Nevíte prosím někdo co s tím? Zkoušel jsem snad už vše :(
Díky
- petr_tricek
- Člen | 7
CZechBoY napsal(a):
$user je uz v nette presenteru, neni potreba ho injectovat rucne
Dobře, nicméně hlásí mi to na všechny funkce a to třeba i na Call to a member function table() on null. Fakt nechápu, fungovalo to a najednou ne :(
- Marek Bartoš
- Nette Blogger | 1297
Tohle ti nemohlo nikdy fungovat, @inject
anotace je jen pro
public properties.
Nette\Application\UI\Presenter
má magic property
$this->user
(volající $this->getUser()
). Smaž
svou property a místo toho použij tu, co už tam je.
- petr_tricek
- Člen | 7
Mabar napsal(a):
Tohle ti nemohlo nikdy fungovat,
@inject
anotace je jen pro public properties.
Nette\Application\UI\Presenter
má magic property$this->user
(volající$this->getUser()
). Smaž svou property a místo toho použij tu, co už tam je.
Díky. To už zabralo. Také to ale hlásí Call to a member function table() on null při dotazu na databázi. Tam ale private $database; odstranit asi nemůžu ne?
- Marek Bartoš
- Nette Blogger | 1297
private změníš na public, protože jen s public properties funguje anotace inject.
- petr_tricek
- Člen | 7
Mabar napsal(a):
private změníš na public, protože jen s public properties funguje anotace inject.
Díky. Nicméně tam bude někde něco špatně a já vůbec nevím co. Ať změním cokoliv tak se to vyřeší a hned vyskočí něco jiného. Teď třeba Call to a member function add() on null což je třída v UserManager. Nicméně i když cokoliv změním na public tak se nic neděje. @injet atd.. jsem přidával až v momentě, kde všechno přestalo fungovat :(
- David Matějka
- Moderator | 6445
pravděpodobně si v nějakým konkretním presenteru překryl konstruktor
BasePresenteru, takže ti to nevložilo závislosti. v base presenteru
používej @inject
property s public accessem
- petr_tricek
- Člen | 7
David Matějka napsal(a):
pravděpodobně si v nějakým konkretním presenteru překryl konstruktor BasePresenteru, takže ti to nevložilo závislosti. v base presenteru používej
@inject
property s public accessem
Díky. Přesně jak píšeš, v jiném presenteru jsem omylem překryl konstruktor :(