Header Control jako persistentní komponenta? Jak na to?
- umrlec
- Člen | 56
Zdravím,
napsal jsem si vlastní HeaderControl, komponentu pro vytváření hlavičky stránky, mohl jsem použít již hotovou (https://forum.nette.org/…ml-hlavickou), nicméně s Nette začínám a chci si ho trochu osahat sám.
Takže mám komponentu … (zkráceno)
<?php
class HeaderControl extends Nette\Application\Control
{
// Mám tu nějaké vlastnosti ...
private $websiteTitle;
private $author;
private $copyright;
private $description;
// ...
// A nějaké metody ...
public function setWebsiteTitle($title)
{
$this->websiteTitle = $title;
}
public function setAuthor($author)
{
$this->author = $author;
}
// ...
?>
Komponentu pak vytvářím v abstraktní třídě BaseFrontendPresenter z níž dědí ostatní presentery v modulu Frontend.
<?php
abstract class BaseFrontendPresenter extends \BasePresenter
{
public function createComponentHeader()
{
$header = new \HeaderControl($this, 'header');
$header->setWebsiteTitle('Název stránky');
$header->setAuthor('Moje jméno');
$header->setCopyright('Copyright (c) 2010, Moje jméno');
$header->setFavicon('favicon.ico');
$header->setCharset('utf-8');
return $header;
}
}
?>
No a chci, abych mohl ke komponentě přistupovat právě z těch ostatních presenterů, které dědí z BaseFrontendPresenter. Mělo by to fungovat tak, aby vlastnosti HeaderControl, které nastavuji při vytváření komponenty v BaseFrontendPresenter, zůstávaly nezměněny a já bych v každém dědícím presenteru pouze u již vytvořené komponenty měnil titulek stránky, popisek, klíčová slova atd. podle potřeby konkrétního presenteru, nejspíš v metodě beforeRender(). Myslím, nejsem si jist, že by HeaderControl měla být tedy nastavena jako persistentní komponenta, ale vůbec nevím jak na to, v dokumentaci jsem našel jenom krátkou zmínku, ze které jsem to nepochopil…
Poradíte?