Renderování samostatné šablony

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

Ahoj,

mám stránku, na ní čudlík, zmáčknu ho a ajax načte část stránky, která se nachází v samostatném souboru (template). Problém je ten, že ta šablona se nezkompiluje/nerenderuje → zůstávají v ní makra a v syrovém stavu se zobrazuje do stránky.

Obsluha klikance ajaxem v presenteru:

	public function handleLoadBrandList($type)
	{
		// Načtení dat z modelu
		$DB = new DBtoWEB;
		$brands = $DB->Get_Present_brands($type);

		// Nacucnutí templatu
$template = new Nette\Templating\FileTemplate(APP_DIR.'/templates/Default/_brandlist.latte');
		// Vyplnění parametrů
$template->setParameters(array('brands'=>$brands, 'type'=>$type));
		$template->compile(); // todleto nevim k čemu, stejně to nefachá
$template->render(); // výstup?

$this->sendPayload();
	}

Výstup do stránky (jak to vypadá v souboru templatu === to co pak pošle server):

{foreach $brands as $i=>$brand}
    <a n:href="odkazNaHledani!, serialize(array('inzert_type'=>$type,'producer_text'=>$brand['producer_text']))" class="bilyText">
        {$brand['producer_text']}&nbsp;({$brand['count']})
    </a>

    <br />

    {* Separátor *}
    {if ((($i+1) % 16)==0)}
        </td><td width="310" style="padding-left:13px; background: url('images/inzert/column_separator.png') no-repeat top left;">
    {/if}
{/foreach}

Já bych samozřejmě chtěl, aby to tu šablonu zkouslo a né poslalo tak jak je.
Vůbec nevim co je špatně, ale pravděpodobně toho bude dost.

vvoody
Člen | 910
+
0
-

1. FileTemplate != Latte, treba šablóne nastaviť Latte filter

$template->registerFilter(new Nette\Latte\Engine);

2. Ten sendPayload() nechápem. Tak buď vyrenderuješ šablónu na výstup, alebo ju odošleš ako súčasť payloadu. Treba asi vybrať len jedno.

tomaass
Člen | 74
+
0
-

Aha, děkuji, pomohlo.

tak to renderuji. Bohužel ale i s tím obsahem příjde nette debug bar. Jak zařídím, aby se neposílal? Zapnu produkční režim?

jasir
Člen | 746
+
0
-

Myslím, že stačí

\Nette\Diagnostics\Debugger::$bar = FALSE;