Default sablona pre vsetky presentery

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

Ako nastavim default sablonu pre vsetky presentery? Mam module „App“ v ktorom vsetky presentery budu vystup posielat v JSON formate, preto vlastne nepotrebujem osobitnu sablonu pre kazdy presenter.

Skusal som to takto:

<?php
abstract class AppBasePresenter extends \BasePresenter
{
	public function Startup()
	{
		parent::startup();

		$this->template->setFile('../templates/@layout.latte'); // default template
	}
}
?>

Lenze nette nevie dany subor najst, existuje nejaka konstanta ktora by ukazovala cestu ku priecinku so sablonami? Alebo ako inak mozem nastavit tu default sablonu :)? Thx

EDIT: nastavil som si absolutnu cestu aby mi nette naslo tu sablonu

$_SERVER['DOCUMENT_ROOT'].'/nette/app/AppModule/templates/@layout.latte

Vyzera to ale dost nepekne, existuje nejaky lepsi sposob?

Editoval buksy (18. 9. 2013 8:25)

Zdeno1981
Člen | 115
+
0
-

Myslím, že by mělo jít použít setLayout dle api: https://api.nette.org/…ter.php.html#…
nebo můžeš v každé šabloně @layout.latte použit makro:

	{extends 'file.latte'}

místo ošklivé globální proměnné, použij konstantu __DIR__

	__DIR__ . '/../../../templates/@layout.latte
na1k
Člen | 288
+
0
-

Radši než konkrétní cestu zkus použít $presenter->setView() a $presenter->setLayout()

Jestli ale chceš vážně všude posílat jen JSON, pak šablony vůbec nepoužívej a na konci actionXYZ volej $presenter->sendResponse(new JSONResponse($data))