Vice renderu v jednom controlu, problem s ajaxem
- Jirda
- Člen | 103
Zdravim,
mam jednoduchou komponentu, ktera jen zvysuje konstantne hodnotu a byl bych rad, kdyby mela vice renderu. (Nejde mi ted o prakticke vyuziti v tomhle pripade, jen me zajima jak takovou vlastnost naimplementovat)
Jestlize mam:
<?php
class myControl extends UI\Control
{
/** @persistent int */
public $value = 0;
public function __construct()
{
parent::__construct();
}
public function handleClick($x, $y)
{
$this->value += $x + $y;
$this->invalidateControl('list');
}
public function renderList()
{
$template = $this->createTemplate();
$template->setFile(__DIR__ . '/templates/default.latte');
$template->value = $this->value;
$template->render();
}
?>
V sablone pak volam {control myControl:list}
A sablona samotneho controlu vypada:
{snippet list}
<a n:href="Click, 1, 2" class="ajax">Click {$value} </a>
{/snippet}
A tovarnicka:
<?php
protected function createComponentMyControl()
{
$control = new MyControl;
return $control;
}
?>
Paklize bych udelal klasicky control, pouze s metodou render(), upravil bych podle toho i volani komponenty na {control myControl}, pak ajax normalne funguje. Ale pokud chci control koncipovat takto, tak pak reseni nefunguje a konzole vraci error 500.
Rad bych prisel na to, jak zprovoznit vice renderu v jednom controlu, protoze bych si pak rad vytvoril neco jako datalist, kde by jeden render vykresloval list a druhy paginator treba.
Diky za komenty.
Jeste dodam: PHP 5.3.6-pl1-gentoo, Apache/2.2.17, Nette Framework 2.0-beta (revision c2c03b0 released on 2011–06–24)
BTW: I kdyz pisu ze je problem s vice renderama, tak jsem to s nema samozrejme zkousel, ale tady jsem se nechtel rozepisovat kodem a tak je tam pouze jedina konkretni render metoda.
Editoval Jirda (10. 7. 2011 14:26)