Použití databáze v modelech
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- pe.havel
- Člen | 14
Ahoj,
v třídě basePresenter mám v konstruktoru získávání databáze, abych se všech presenterech měl přístup k databázi. To funguje. Nyní bych chtěl totéž i v modelech (se kterými začínám). Ve třídě Funkce, ze které budou všechny modely dědit jsem udělal totéž, co v basePresenter:
<?php
namespace App\Model;
use Nette;
class Funkce extends Nette\Object {
/** @var Nette\Database\Context */
protected $db;
public function __construct(Nette\Database\Context $database)
{
$this->db = $database;
}
}
Ale laděnka vyhazuje:
Argument 1 passed to App\Model\Funkce::__construct() must be an instance of Nette\Database\Context, none given, called in /app/MainModule/presenters/BasePresenter.php on line 23 and defined
Kde je problém? (Předpokládám, že se při vytváření objektu argument
databáze vyplní sám, jako to fungovalo v BasePresenteru)
Procházel jsem různý diskuze, ale nikde jsem nepochodil.
Díky
- pe.havel
- Člen | 14
BasePresenter vypadá takto (tam db bez problému chodí):
<?php
namespace App\MainModule;
use Nette,
App\Model\VSFunkce;
/**
* Base presenter for all application presenters.
*/
class BasePresenter extends Nette\Application\UI\Presenter
{
/** @var Nette\Database\Context */
protected $db;
protected $vs;
public function __construct(Nette\Database\Context $database)
{
$this->db = $database;
$this->vs = new VSFunkce;
}
}
- James_Scott
- Člen | 55
- BasePresenter – v konstruktoru si vyzadej instanci tridy Funkce
- Funkce – pokud slouzi stejne jako BasePresenter, tudiz aby od ni ostatni modely dedily, tak bych ji zapsal jako abstract.
- config.neon – zaregistruj si tridu Funkce jako sluzbu, jak psal Voda