XHTML nejde vypnout, nastaveno správně
- hubipe
- Člen | 26
Dobrý den,
narazil jsem na zajímavou chybu, se kterou si neumím poradit. Mám Nette
version 2.0.6 released on 2012–10–01.
V @layout.latte mám
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
...
ale vygeneruje se z toho
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
Přitom config obsahuje
#
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
#
# If you don't protect this directory from direct web access, anybody will be able to see your passwords.
# https://nette.org/en/security-warning
#
common:
nette:
application:
errorPresenter: Error
debugger: true
xhtml: no
container:
debugger: true
debugger:
strictMode: true
session:
expiration: 30 days
autoStart: smart
savePath: "%tempDir%/sessions"
gcProbability: 1
Pokud se podívám do temp/cache/_Nette.Configurator/SystemContainer, metoda
initialize() obsahuje Nette\Utils\Html::$xhtml = FALSE;
a metoda
createNette__latte()
$service = new Nette\Latte\Engine;
$service->getCompiler()->defaultContentType = 'html';
return $service;
Tak proč #@$^! se generuje XHTML?
Díky za odpovědi
- hubipe
- Člen | 26
Už jsem na to přišel :)
V presenteru jsem překryl metodu templatePrepareFilters
touto:
public function templatePrepareFilters($tpl)
{
$tpl->registerFilter($latte = new \Nette\Latte\Engine);
$set = \Nette\Latte\Macros\MacroSet::install($latte->compiler);
// ... vlastní latté makra
}
Což zapříčinilo, že se nevolal předek v
Nette\Application\UI\Control
. A protože jsem latté vytvářel
přímo v metodě, nepředávala se nastavení z configu.
Stačí tedy změnit řádek
$tpl->registerFilter($latte = new \Nette\Latte\Engine);
za
$tpl->registerFilter($latte = $this->getContext()->nette->createLatte());
Ale že to stálo úsilí…
- ic
- Člen | 430
To je pravda, ale zase formuláře přenášejí validační pravidla
v data-cosi atributu, který s XHTML kompatibilní není a ani nevím jestli
existuje nějaká XHTML kompatibilní alternativa formulářů. A takových
věci bude asi více (přesto, že mě teď nic nenapadá).
V defaultu bych spíše čekal tohle vypnuté a případně ve skeletonu
zápis, který to povoluje a dal by se tak snadno a intuitivně smazat.
EDIT: Nejlepší řešení by bylo, aby se nette kouklo na začátek souboru @layout.latte a tam zjistilo, jestli jde o XHTML a pak ukončovalo i nepárové tagy a jinak nic takového nedělat.
Editoval ic (5. 11. 2012 12:17)