Definice bloku v komponentě a vložení do @layout
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- David Matějka
- Moderator | 6445
nepude to, layout nevidi do sablony komponenty. budes muset vymyslet jiny pristup.
- castamir
- Člen | 629
Komponenty mohou mít více render metod a do každé z nich můžeš dát něco jiného (do jedné třeba formulář, do druhé skripty na jeho ovládání). Všimni si zejména názvu druhé metody renderJs a ve druhé ukázce si všimni makra control:
class MyControl extends Nette\Application\UI\Control
{
public function render()
{
/** @var Template $template */
$template = $this->createTemplate();
$template->setFile(__DIR__ . '/control.latte');
$template->render();
}
public function renderJs()
{
/** @var Template $template */
$template = $this->createTemplate();
$template->setFile(__DIR__ . '/javascript.latte');
$template->render();
}
}
a v šabloně, kde si vytvoříš instanci výše uvedené komponenty pak můžeš udělat následující:
{block content}
<h1>Komponenta</h1>
{control myControl}
{/block}
{block scripts}
{include parent}
{control myControl:js}
{/block}