Basepresenter a ověření uživatele

Johnczek
Člen | 37
+
0
-

Dobrý den, poprosil bych vás o radu, jestli se někdo takový najde.

Potřebuji objekt basket pro všechny stránky mého webu a pouze pro přihlášené uživatele. (S tím, že potřebuje pro svoji akci ID uživatele který košík vlastní a databázi ze které se budou tahat údaje). tak jsem si v basepresenteru založil metodu startup, vypadá asi takto

<?php

namespace App\Presenters;

use App\Model\Basket;
use Nette;


/**
 * Base presenter for all application presenters.
 */
abstract class BasePresenter extends Nette\Application\UI\Presenter {

    public function startup() {
        parent::startup();

        if($this->getUser()->isLoggedIn())
            $this->template->basket = new Basket($this->getUser()->getId());
        else
            $this->template->basket = null;
    }
}

Problém je následující, já nějak potřebuji předat objektu basket i databázové spojení (nebo ho tam v objektu nějak nacpat. A vůbec se mi to nedaří.

Myslel jsem něco takového. Ovšem v Basepresenteru se nějak nemůžu dostat nijak k databázi. Mohl by mi tady někdo pomoci? Jak se to má udělat správně?

<?php


namespace App\Model;

use Nette;


class Basket {
    use Nette\SmartObject;

    private $id;

    private $database;

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

}
CZechBoY
Člen | 3608
+
+3
-

Lepsi je udelat z Basket sluzbu kterou registrujes do konfiguraku a pak si ji predas do presenteru. Potom metoda co bude potrebovat uzivatele tak ji predas id uzivatele pres parametr.