Paweł Koralewski

Paweł Koralewski architekt aplikacji,
team leader

Temat: renderowanie widoku ze stringa a nie z pliku

Jak to wykonać? Mam ileś szablonów maili zapisanych w bazie i po pobraniu treści maila chcę go wyrenderować i wysłać. Na stackoverflow znalazłem podpowiedź, aby skorzystać z bundle https://github.com/LaKrue/TwigstringBundle ale może jest jakiś łatwiejszy sposób?

konto usunięte

Temat: renderowanie widoku ze stringa a nie z pliku

Najprościej - dodać nowy templating engine, który tak na prawdę jest kopią Twiga ale zamiast Twig_Loader_Filesystem($templateDir) używa Twig_Loader_String().

Z tego co widzę, to mniej więcej to właśnie robi ów bundle (bundel?)Michał Wachowski edytował(a) ten post dnia 13.03.12 o godzinie 00:15
Antoni Orfin

Antoni Orfin Software Architect /
Symfony Consultant

Temat: renderowanie widoku ze stringa a nie z pliku

Można użyć tego bundle'a, a można samemu sklecić kod w stylu:

// gdziekolwiek, nawet może być static ;)
private function getNewTwigInstance(\Twig_LoaderInterface $loader, \Twig_Environment $twigEnv = null) {
$twig = new \Twig_Environment($loader);
// 'klonowanie' środowiska zadanego w parametrach metody
if($twigEnv !== null) { $twig->setExtensions($twigEnv->getExtensions());
$twig->setCache($twigEnv->getCache());
$twig->setLexer($twigEnv->getLexer());
$twig->setCharset($twigEnv->getCharset());
}
return $twig;
}


// przykładowe wywołanie, w kontrolerze
public function myAction() {
$myString = 'test';
$twig = $this->getNewTwigInstance(new \Twig_Loader_String(), $this->get('twig'));
$template = $twig->loadTemplate($myString);
$rendered = $template->render(); // w render tablica asocjacyjna z parametrami do wyrenderowania szablonu (zmiennymi)
...
}


mało uniwersalne itp ale proste.



Wyślij zaproszenie do