Správný postup při práci s komponentou
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Gustav
- Člen | 16
Dobrý den vespolek,
spatlal jsem si takovej menší příklad na komponentu, ale vím že je to špatný postup, toho jak to provádím, proto bych někoho poprosil o zvalidování následujících kódu, nebo alespoň o nasměrování.
GalleryControl.php
<?php
class GalleryControl extends \Nette\Application\UI\Control
{
private $gallery;
private $galf;
private $images;
function __construct(GalleryFascade $galf)
{
parent::__construct();
$this->galf = $galf;
}
function render($id, $type = 1)
{
$this->template->setFile(__DIR__ . '/../templates/controls/GalleryControl.latte');
$this->template->data = $this->galf->getGallery($id);
$this->template->type = $type;
$this->template->images = $this->galf->getGalleryImages($id);
$this->template->render();
}
}
?>
ClanekPresenter.php
<?php
...
protected function createComponentGalerie($id)
{
$data = new \GalleryControl(new \GalleryFascade($this->presenter->context->dibi->connection, $this->presenter->context->tf));
return $data;
}
?>
config.neon
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
#
# If you don't protect this directory from direct web access, anybody will be able to see your passwords.
# https://nette.org/en/security-warning
common:
dibi:
host: localhost
username: root
password:
database: db
lazy: TRUE
parameters:
nette:
database:
default:
dsn: 'mysql:dbname=db'
user: root
password:
session:
expiration: 14 days
php:
date.timezone: Europe/Prague
services:
uf: UsersFascade
af: ArticleFascade
cf: CommentsFascade
templateFactory: FrontModule\TemplateFactory(@nette.templateCacheStorage, ...)
authenticator: Authenticator
production < common:
development < common:
Jde mi především tedy o to používání DIBI, s tím jsem si moc nesedl, děkuji předem všem.
- Jan Tvrdík
- Nette guru | 2595
GalleryFascade
by měla být definována jako služba
v configu, jinak mi to připadá v pořádku.
Ještě: $this->presenter
nemá v presenterech moc smysl
používat.
- Jan Tvrdík
- Nette guru | 2595
ClanekPresenter.php
protected function createComponentGalerie($id)
{
return new \GalleryControl($this->context->gf);
}
config.neon
services:
gf: GalleryFascade
...