Problem s rozjetim texy, pravdepodobne problem mezi klavesnici a zidli
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Glubo
- Člen | 12
Zdravicko. Nejak se mi nedari rozjet texy v templatech.
<texy>**ahoj**</texy>
mi funguje krasne, nicmene
<texy>{$nejakapromenna->neco}</texy>
se mi prelozi na @php:p5@, nezavisle na obsahu dane promenne.
{$nejakapromenna->neco |texy}
vyvola vyjimku „Call to undefined method Template::texy().“
Pouzivam knihovny z NetteFramework-0.9.4-PHP5.2.zip a texy-2.1.zip. Dle dokumentace jsem rpidal do BasePresenteru metodu
<?php
public function templatePrepareFilters($template) {
parent::templatePrepareFilters($template);
// inicializace Texy
TemplateFilters::$texy = new Texy();
TemplateFilters::$texy->encoding = 'utf-8';
TemplateFilters::$texy->allowedTags = Texy::NONE;
TemplateFilters::$texy->allowedStyles = Texy::NONE;
TemplateFilters::$texy->setOutputMode(Texy::HTML5);
// registrace filtru texyElements
$template->registerFilter('Nette\Templates\TemplateFilters::texyElements');
}
?>
Napada nekoho, kde delam chybu?
- Glubo
- Člen | 12
Tak jsem nakonec vyresil vlastnim helperem texy, ktery je zatim dost
neoptimalizovany (pokazde si vytvari novy objekt texy), ale az bude potreba,
nebude tak tezke jej optimalizovat nejakym sigletonem…
vytvoril jsem si tridu GTexyHelpers
<?php
final class GTexyHelpers
{
/**
* Static class - cannot be instantiated.
*/
final public function __construct()
{
throw new LogicException("Cannot instantiate static class " . get_class($this));
}
public static function texy ($s) {
$texy = new Texy();
return $texy->process($s);
}
}
?>
a do BasePresenteru jsem pretizil metodu createTemplate
<?php
protected function createTemplate() {
$template = parent::createTemplate ();
$template->registerHelper('texy','GTexyHelpers::texy');
return $template;
}
?>
a nyni mi, sice ponekud neciste, ale funguje zapis v template
{!$neco|texy}