Vice renderu v jednom controlu, problem s ajaxem

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jirda
Člen | 103
+
0
-

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)

nanuqcz
Člen | 822
+
0
-

Ahoj, zrovna před pár dny se o tom mluvio v jednom vlákně