Použití latte kódu v databázi
- Томас
- Člen | 85
Ahoj, narazil jsem na jeden problém. Píšu „widgety“ a z velké části se skládají jen z html ale v pár widgetech potřebuju používat i php. Widgety dejme tomu jsou jen nějaký záznam z databáze pro příklad.
<div id="{$widget->class}">
{$widget->content|noescape}
</div>
A pak je widget, kterej vypíše všechny články
<div id="{$widget->class}">
<?php eval($widget->content); ?>
</div>
Problém je, že nette mi escapuje PHP do komentářů, tudíž to PHP nefunguje. Zajímavé je, že na localu to normálně funguje → na ostrém se to escapuje. Jde nějak použít latte macra, které jsou uloženy v databázi? Nebo jak to řešíte? Jestli to řešíte.
Např.: v tabuce mám ->
content a ten obsahuje
<!-- content -->
{foreach $articles as $article}
<h1>{$article->title}</h1>
{/foreach}
a pak v sablone
<!-- template -->
{foreach $widgets as $widget}
// tady ten content aby to fungovalo jako když to sem napíšu ručně
{/foreach}
díky
Editoval Томас (13. 7. 2014 23:29)
- David Kudera
- Člen | 455
Caine napsal(a):
Jsem jedinej, komu tenhle zapis prijde naprosto silenej?
Nejsi..
- David Kudera
- Člen | 455
Milo napsal(a):
@Caine @DavidKudera Co je na tom naprosto šíleného? Když vezmete v úvahu, že se Latte kompiluje do PHP, jak byste si to představovali?
Tak nějak od pohledu se mi to nelíbí.. Asi tak stejně jako přistupování k db v šabloně. Třeba je to ale jen můj pocit
- David Kudera
- Člen | 455
Milo napsal(a):
@DavidKudera Pokud jde jen o vzhled, dá se z toho udělat macro, např:
{latte $widget->content}
(tedy název makra bych asi použil jiný). S trochou práce se to přepíše na
Latte\Loaders\FileLoader
a je to i s kešováním.
Když tak na to koukám, tak to bude asi tím a s tímhle „schováním“ už to vypadá líp no
- David Kudera
- Člen | 455
Jak bude trochu času, tak zveřejním i svoje řešení, jen jeho největší výhoda je ve spojení s administrací, kde to funguje stejně jako widgety u wordpressu. Budu si s tím muset trochu pohrát a udělat to víc nezávislý
- akadlec
- Člen | 1326
@Томас: hele jak ty tvoje widgety vypadaji? Je to jen nějaké tupé vypsání obsahu? Já to začal řešit tak (měl jsem to v jiné appce) že widgety byly podle typu, každý prostě dělal něco jiného a dohromady skládaly obal samotné webstránky. Takže sem měl třeba widget na 10 posledních článku, top produkty z eshopu atd. Jak to dostat do nette jsem řešil i tady
Zatím to mám u ledu protože řeším aktuálně modulové části, ale fungovalo to tak že se widgety načetly z db podle podmínek a podle toho se pak vytvořily komponenty, resp. byla to jedna komponenta widget co to obalovala a přebirala info jaké (na jaké pozici) widgety má zobrazit a ty si pak interně vykreslila. V šabloně pak stačilo mít {control widget-leftBig} apod. a widget manager se postaral o načtení widgetů a jejich vykreslení.