komponenta – dvě view v sobě
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- frosty22
- Člen | 373
Jestli jsem to pochopil správně tak máš něco jako:
<?php
class FooControl extends Control {
public renderFoo()
{
$tpl = $this->createTemplate();
$tpl->setFile("foo.latte");
$tpl->render();
}
public renderBar()
{
$tpl = $this->createTemplate();
$tpl->setFile("bar.latte");
$tpl->render();
}
}
?>
Potom máš tedy dvě view a můžeš volat v šabloně třeba (počítám s createComponentFoo v presenter):
{control foo:foo}
{control foo:bar}
Ale ty bys chtěl tedy mít v šabloně foo.latte vykreslené i to druhé view bar.latte?
Tohle asi bych řešil spíše includováním té části, která sdílená mezi oběmi šablonami do obou šablon. Jinak teoreticky by mohlo jít (nezkusil jsem), když předáš tu komponentu šabloně a vykreslíš:
<?php
public renderFoo()
{
$tpl = $this->createTemplate();
$tpl->setFile("foo.latte");
$tpl->fooControl= $this; // předám do šablony
$tpl->render();
}
?>
A v šabloně foo.latte pak:
{control $fooControl bar} - tím si nejsem jist
{? $fooControl->renderBar() ?} - tohle by již mělo
- batko
- Člen | 219
vyřešeno, ukážu na tvém kodu
<?php
class FooControl extends Control {
public renderFoo()
{
$tpl = $this->createTemplate();
$bar = $this;
$tpl->setFile("foo.latte");
$tpl->render();
}
public renderBar($id)
{
$tpl = $this->createTemplate();
$tpl->setFile("bar.latte");
$tpl->render();
}
}
?>
latte foo
<?php
{$bar->renderBar($id)}
?>
mě to funguje, má nekdo lepší nápady?
@frosty22 díky za nasměrování :-)