Nelze získat připojení k databázi
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Spectrik
- Člen | 23
Ahoj,
mám komponentu, kterou potřebuji vypisovat všude, tudíž ji vytvářím v BasePresenteru. Tato komponenta potřebuje připojení k databázi tak jí ho předávám tímhle způsobem:
<?php
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
private $database;
public function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
protected function createComponentKategorie() {
$control = new \CategoryControl();
$control->SetService($this->database);
return $control;
}
}
?>
dále samotná komponenta:
<?php
class CategoryControl extends Control
{
private $database;
public function SetService($service)
{
$this->database = $service;
}
public function render()
{
$kategorie = $this->database->table('posts')->select('category');
$this->template->setFile(__DIR__ . '/CategoryControl.latte');
$this->template->kategorie = $kategorie;
$this->template->render();
}
}
?>
nicméně když to pustím, dostanu:
<?php
Call to a member function table() on a non-object
?>
Zvláštní je, že se mi toto děje jen tehdy, pokud připojení k DB získávám konstruktorem v Base presenteru, v ostatních presenterech to šlo tak nevím co s tím…
Nějaké nápady?