Problém s metodou startup v basepresenteru
- edmund
- Člen | 28
Ahoj, mám asi úplně blbej dotaz, ale nějak si s tím nevím rady.
Zkouším si hrát s nette a vyrábím si takovou miniaplikaci tím, že
upravuju kód ukázkové aplikace Dashboard. Původní příklad obsahoval jen
jeden presenter a tak se ověření, zda je uživatel přihlášen, dělalo
v něm. Moje aplikace obsahuje presenterů víc a tak jsem chtěl přesunout
kód na ověření přihlášení uživatele přesunout do basePresenteru, abych
ho nemusel opakovat v každém presenteru znovu.
Tak jsem v basepresenteru vytvořil funkci startup a přesunul do ní kód pro
ověření uživatele z původní funkce startup. Výsledek vypadá takhle:
abstract class BasePresenter extends Presenter {
protected function startup() {
// user authentication
}
}
class TypyPresenter extends BasePresenter
{
protected function startup() {
parent::startup();
//nejaky kod
}
A laděnka mi teď hlásí tohle: Method TypyPresenter::startup() or its descendant doesn't call parent::startup(). Chápu. co mi to hlásí, ale nechápu proč. Jak to mám upravit, aby to fungovalo?
- Filip Procházka
- Moderator | 4668
Protože v tom startupu, který je v https://api.nette.org/…ter.php.html#228, se nastavuje privátní property, která když nebude nastavena, tak presenter vyhazuje výjimku.
- edmund
- Člen | 28
Super,
odkaz od redheada mi nejenže objasnil poslední nejasnosti, ale navíc
i zodpověděl otázku, kterou jsem, ještě ani nestihl položit :-)
Zajímalo mě, jak to udělat, když z nějakého presenteru, typicky
SignPresenter, nechci provádět ověření uživatele, volané
v basepresenteru.