nefunguje extends na base presenter

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

Zdravím všechny, setkal jsem se teď s jednou drobností, co by mi měla fungovat ale nefunguje a už nevím důvod, proč se tak děje… mám BasePresenter ve kterém mám:

/** @var Nette\Database\Context */
    public $database;

    public function __construct(Nette\Database\Context $database) {
        $this->database = $database;
    }

a pak mám jiný presenter, ze kterého potřebuju, aby dědil věci z tohoto základního, jeho začátek je:

namespace App\BackModule\Presenters;
use App\Presenters\BasePresenter as Presenter;
class TestPresenter extends Presenter {
}

Je to oddělený modul, nicméně když bych chtěl použít $this->database, tak je tahle proměná prázdná, takže když udělám $this->database->table(‚nazev_tabulky‘); tak to hodí: Fatal Error Call to a member function table() on null
Přijde mi, jako by tenhle presenter vůbec nedědil nic z toho základního BasePresenteru. Jinak ten nový presenter je uložen v app\BackModule\presenters a ten základní je v app\presenters, aplikace má víc modulů u kterých potřebuju aby fungovali samostatně, jen připojení pro DB je pro všechny společné

David Matějka
Moderator | 6445
+
0
-

neprekryvas konstruktor?

Webster.K
Člen | 192
+
0
-

V tom TestPresenteru konstruktor sice je ale jiný:

/** @var FormFactory */
    private $factory;

    public function __construct(\App\BackModule\Forms\FormFactory $factory) {
        $this->factory = $factory;
    }

tam je jen tohle

David Matějka
Moderator | 6445
+
+1
-

no tak kdyz si prekryl konstruktor base presenteru, tak se nemuzes divit, ze se nezavola :) v base presenteru je lepsi zavislosti predavat pres inject properties, pripadne inject metody.

Webster.K
Člen | 192
+
0
-

Aha :) každopádně stejně tu věc na ty formuláře se mi táhne celou aplikací :D takže jsem to hodil do base a odsud smazal, což funguje, děkuju moc :)