jak vložit šablonu podle výskytu v html kodu
- pospi
- Člen | 18
Ahoj potreboval bych vyresit problem : Mam v DB ulozeny html kod, ktery
obsahuje znacku {galerie}, pri denerovani stranky se misto znacky ma na toto
misto vlozit sablona. Jak to ale udelat v kodu ?
Vkladat to v presenteru ? Jak v presenteru vlozim do sablony dalsi sablonu
?
Vkladat to v sablone? Jak najdu a nahradim tu znaku ?
potreboval bych neco takoveho :
{foreach $paragraph|explode:'{galerie}' as $parag}
{$parag}
{if $iterator->first}
{include ../gallery.latte}
{/if}
{/foreach}
Moc dekuji za radu. Jeste doplnim ze data ktere mi prijdou z DB nemuzu menit ani pregenerovat.
- dakur
- Člen | 493
V presenteru si kód rozřež funkcí preg_split()
:
public functin renderDefault(): void
{
$this->template->parts = preg_split('/({galerie})/', $code, flags: PREG_SPLIT_DELIM_CAPTURE);
}
/**
* Pro `<p>abcd</p>{galerie}<p>efgh</p>{galerie}<p>ijkl</p>` vrátí:
* array {
* 0 => '<p>abcd</p>',
* 1 => '{galerie}',
* 2 => '<p>efgh</p>',
* 3 => '{galerie}',
* 4 => '<p>ijkl</p>',
* }
* viz https://3v4l.org/FRKki
*/
V šabloně pak iteruj nad všemi částmi a zjišťuj, zda jde o galerii:
{foreach $parts as $part}
{if $part === '{galerie}'}
{include ../gallery.latte}
{else}
{$part}
{/if}
{/foreach}
Jen nevím jak z hlediska výkonnosti, ale na menších projektech to asi není třeba řešit.
Editoval dakur (25. 3. 12:54)