Latte samostatně – použití {status 500} vyhodí Fatal error

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

Používám Latte samostatně a drtivá většina maker je bez problémů. Ale když chci použít
{status xxx}, tak mi to vyhodí chybu: „Fatal error: Call to a member function setCode() on a non-object…“.

Ve vygenerované cache se volá toto: $netteHttpResponse->setCode(500) ;

Dle všeho objekt $netteHttpResponse vůbec nevznikne. Latte inicializuji takto:

<?php
use Nette\Templating\FileTemplate;

$template = new FileTemplate();
$template->setCacheStorage(new Nette\Caching\Storages\PhpFileStorage(ROOT_PATH. 'cache/nette/'));
$template->registerHelperLoader('Nette\Templating\Helpers::loader');
$template->onPrepareFilters[] = function($template) {
	$latte = new Nette\Latte\Engine;
	$template->registerFilter($latte);

	$set = new Nette\Latte\Macros\MacroSet($latte->compiler);

	$set->addMacro(
		'abc',
		'$args = %node.array;echo (trim($args[1]) ? $args[1] : $args[0]);'
	);
};
?>

Poradí prosím někdo, co tomu ještě chybí ke štěstí?

Editoval RadaR (30. 7. 2014 15:50)

David Matějka
Moderator | 6445
+
+1
-

v 2.2 jiz tohle makro neni zavisle na Nette\Application, muzes se tedy inspirovat a defaultni makro prekryt: https://api.nette.org/…ros.php.html#…

RadaR
Člen | 46
+
0
-

Díky, nenapadlo mne podívat se tomu více „pod kapotu“.

Btw: Nebylo by dobré, aby někdo odstranil nebo aspoň zmínil tuto skutečnost v dokumentaci? Viz https://latte.nette.org/cs/tags#…

Editoval RadaR (31. 7. 2014 10:19)

Jan Tvrdík
Nette guru | 2595
+
+2
-

@RadaR: Použij aktuální Nette 2.2 a budeš mít po problémech.

RadaR
Člen | 46
+
0
-

@JanTvrdík: OK, zkusil jsem to, ale po přehození z 2.1 na Nette na 2.2.2 dostávám chybovou hlášku při vykreslení jakékoliv stránky:

Deprecated: Magic getters are deprecated. Use getCompiler() method instead. in C:\xampp\htdocs\project3\Nette\deprecated\Latte\Engine.php on line 57

ze které vůbec nejsem moudrý. Asi je nutné Latte jinak volat? Viz výše, můj kód.

A dále jsem si všiml jisté odlišnosti ukládání a pojmenovávání souborů přeložených šablon do nativního php kódu. S Nette 2.1 se v adresáři /cache/nette automaticky vytvořil podadresář /_Nette.FileTemplate a v něm byly přeložené šablony, nyní tento adresář nevznikne a soubory již v názvu souboru obsahují něco jako úplnou cestu… Je v tom poněkud větší chaos, nicméně samozřejmě není klíčové – pokud bude vše fungovat, jak má.

David Kudera
Člen | 455
+
0
-

Koukni kdyžtak sem

RadaR
Člen | 46
+
0
-

@DavidKudera: Aha. Rozumím. Díky, ale v tom případě se točím v bludném kruhu, ze kterého aktuálně „není úniku“. Mám hotovej celkem velkej projekt v Nette 2.1 a již dříve jsem chtěl zkusit nové Latte – viz https://forum.nette.org/…et-not-found

Sice jsem dostal užitečné rady, jenže nedostanu prostředky k tomu, abych si s tím měl čas hrát a vše odladil a předělal na verzi Nette 2.2×. No, třeba někdy…