Basepresenter a ověření uživatele
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Johnczek
- Člen | 37
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;
}
}