Nelze povolit nocheck filtr
- PajaS
- Člen | 13
Potřeboval bych v šabloně povolit nocheck
, jelikož
vkládám konstantní hodnotu, kterou potřebuji jen prohnat filtrem.
Když v kódu nastavím policy následovně:
$policy = new Latte\Sandbox\SecurityPolicy;
$policy->allowFilters(['nocheck']);
$latte->setPolicy($policy);
stejně pořád končím na výjimce:
Uncaught Latte\SecurityViolationException: Filter |nocheck is not allowed.
Uniká mi něco?
- PajaS
- Člen | 13
$latte = new Latte\Engine;
Resp. celý kód:
$latte = new Latte\Engine;
$latte->setTempDirectory(__DIR__ . '/tmp');
$policy = Latte\Sandbox\SecurityPolicy::createSafePolicy();
$policy->allowFilters(['nocheck']);
$latte->setPolicy($policy);
$latte->render(__DIR__ . '/templates/index.html');
Editoval PajaS (19. 8. 2020 10:00)
- Ondřej Kubíček
- Člen | 494
podle dokumentace https://latte.nette.org/cs/filters#…
se ten filtr jmenuje noCheck
(velké C), tak bych to
zkusil takhle
Editoval Ondřej Kubíček (19. 8. 2020 10:43)
- PajaS
- Člen | 13
Procházím zdrojový kód Latte a tato hláška mi vyskakuje ze souboru
Latte/Compiler/PhpWriter.php
na řádku 695
:
} elseif (!strcasecmp($tokens->currentValue(), 'noescape') || !strcasecmp($tokens->currentValue(), 'nocheck')) {
throw new SecurityViolationException("Filter |{$tokens->currentValue()} is not allowed.");
Přitom když si u Policy zavolám
$policy->isFilterAllowed('nocheck')
, je to
true
…
Změnit velikost písmene jsem samozřejmě zkoušel, bez úspěchu.
Pro úplnost ještě uvádím způsob volání v šabloně:
<div style="background-image: url('{='img/image1.png'|imageUrl:true|nocheck}');">
Editoval PajaS (19. 8. 2020 10:52)
- David Grudl
- Nette Core | 8218
Ta chybová zpráva je špatná. Jde o to, že Latte adresy uvnitř CSS nekontroluje, tudíž kontrolu ani nelze vypnout.
- janpecha
- Backer | 75
@PajaS a to právě souvisí s escapováním a
noescape
– nikoli s kontrolou odkazů a nocheck
(https://latte.nette.org/cs/filters#…)