Ukázka řešení s používáním modelů – máte nápady na zlepšení?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- radekBrno
- Člen | 61
Ahoj,
zkouším upravit svoje aplikace tak, abych vše kolem databáze dostal pryč z presenterů. Funkční řešení mám, ale zajímá mě, jak by to šlo napsat líp.
Model Article
namespace FrontModule;
use nette;
class Article extends \Nette\Object
{
/** @var Nette\Database\Context */
public $database;
public function __construct(\Nette\Database\Context $database)
{
$this->database = $database;
}
public function findBy()
{
return $this->database->table("article")->fetchAll();
}
}
HomepagePresenter
namespace FrontModule;
use Nette;
use App\Model;
class HomepagePresenter extends BasePresenter
{
/** @var Nette\Database\Context */
public $database;
private $model;
public function __construct(\Nette\Database\Context $database)
{
$this->database = $database;
}
public function renderDefault()
{
$this->model = new Article($this->database);
$this->template->articles = (object) $this->model->findBy();
}
}
Na tomto řešení se mi nelíbí to, že databáze jde do modelu přes presenter. Zkoušel jsem ji injectnout přímo do modelu, ale to se mi nepovedlo. Díky za rady.
- David Matějka
- Moderator | 6445
Na tomto řešení se mi nelíbí to, že databáze jde do modelu přes presenter. Zkoušel jsem ji injectnout přímo do modelu, ale to se mi nepovedlo.
je to snadne:
1. Article registrujes jako sluzbu v config.neon
services:
- FrontModule\Article
2. pak jen tu tridu vyzadas v konstruktoru namisto database.