Page not found. Missing template

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

Rad bych vedel, zda se da nejak osetrit chybejici sablona. V nekterych akci presenteru je kod natolik trivialni, ze se pro nej nevyplaci neustale vytvaret prazdou sablonu. Da se to nejak premostit? v nekterych frameworcich se pouziva napr.

public function viewAction() {
	echo "obsah z presenteru misto obsahu z sablony 'Presenter.Action.latte'";
}

kdy nemusim zakladat latte nebo phtml sablonu a kod do pripadneho layoutu vypisu primo z presenteru?

Michal Vyšinský
Člen | 608
+
0
-

Osobně bych to řešil tak, že bych si vytvořil univerzální latte soubor (třeba blank.latte) a v render metodách, pro které nechceš/nepotřebuješ šablonu nastavit tuto šablonu. V šabloně bys mohl mít výpis proměnné třeba $content a v oné render metodě by sis ji naplnil čímkoliv chceš. V praxi by to mohlo vypadat asi takto:

blank.latte:

{block #content}
{!$content} {* neescapovat kvůli možnému HTML obsahu (ale záleží na tobě *}

presenter:

public function renderPage() {
	$this->template->setFile("CESTA K blank.latte");
	$this->template->content = "JAKYKOLIV TVŮJ OBSAH";
}

Editoval CherryBoss (6. 2. 2013 21:42)

kubajz
Člen | 47
+
0
-

Pokud to opravdu potřebuješ, tak prostě ukonči běh skriptu:

	public function actionNeco() {
	  echo 'Vypiš pouze tento text';
	  die();
	}

Anebo takto:

	public function actionNeco() {
	  $this->sendResponse(new Nette\Application\Responses\TextResponse('Pošli tento textový výstup, nic víc.'));
	}