Spatne se renderujici tag <link> v sablone?
- grivaldu
- Člen | 13
Zdravim,
neco mi meni v template s registrovanym Latte tag <link> na
<link/>, cokoliv jineho projde v poradku viz. example nize:
<?php //netteCache[01]000247a:2:{s:4:"time";s:21:"0.74110500 1307983970";s:9:"callbacks";a:1:{i:0;a:3:{i:0;a:2:{i:0;s:19:"Nette\Caching\Cache";i:1;s:9:"checkFile";}i:1;s:77:"/web/virtuals/robzone/document_root/../app/templates/Export/googleGoods.phtml";i:2;i:1307983703;}}}?><?php
// file …/templates/Export/googleGoods.phtml
//
$_cb = Nette\Templates\LatteMacros::initRuntime($template, NULL, '734a5da787'); unset($_extends);
if (isset($presenter, $control) && $presenter->isAjax()) { Nette\Templates\LatteMacros::renderSnippets($control, $_cb, get_defined_vars()); }
if (Nette\Templates\SnippetHelper::$outputAllowed) {
?>
<<?php ?>?xml version="1.0" encoding="UTF-8" ?>
<rss version ="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<title>Nazev feedu</title>
<description>Popis feedu</description>
<link />http://www.domena.tld<link>
<?php foreach ($iterator = $_cb->its[] = new Nette\SmartCachingIterator($products) as $item): ?>
EDIT: Zapommnel jsem na verzi, je to: 1.0 pro 5.3 s namespaces
Editoval grivaldu (13. 6. 2011 15:32)
- grivaldu
- Člen | 13
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<title>Nazev feedu</title>
<description>Popis feedu</description>
<link>http://www.domena.tld</link>
{foreach $products as $item}
<item>
<g:id>{$item->idProduct}</g:id>
<g:brand>Brand</g:brand>
<title>{$item->getOriginalName()}</title>
<link>{link //Product:default showId => $item->idProduct}</link>
<g:price>{if $item->action_price > 0 && $item->action_price < $item->price}{$item->action_price}{else}{$item->price}{/if}</g:price>
<description>{$item->content|stripTags}</description>
<g:condition>new</g:condition>
<g:gtin></g:gtin>
<g:mpn>{$item->code}</g:mpn>
<g:image_link>{$baseUri}{$item->sliderImage->size(200,NULL)->url}</g:image_link>
<g:product_type>category</g:product_type>
<g:quantity>99</g:quantity>
<g:availability>in stock<g:availability>
<g:shipping>
<g:country>CZ</g:country>
<g:service>Kurýr PPL zdarma</g:service>
<g:price>0</g:price>
</g:shipping>
</item>
{/foreach}
</channel>
</rss>
- David Grudl
- Nette Core | 8228
Dej na začátek {contentType application/xml}
jinak se použije
HTML parser.
- grivaldu
- Člen | 13
Hmm Content-Type sem specifikoval v HttpResponse. Nebylo by vhodne aby si template renderer zjistil tedy nejprve informace z response headeru a az nasledne resil nastaveni sablony? Specifikovat contentType v sablone je hezka vec, ale pride mi to trosku prasacke.
Kazdopadne diky, zabralo to.
Editoval grivaldu (14. 6. 2011 12:50)
- grivaldu
- Člen | 13
To s tebou nesouhlasim, aplikace muze vratit Content-Type v response absolutne nezavisle na tom, co je napsano v sablone. Sablona muze byt napr. uplne prazdna a presto muze aplikace rict, ze content, ktery vraci by mel byt XML, JSON ci cokoliv jineho. Primarne by aplikace mela rikat, co bude vystupem, nikoliv az sablona urcena k formatovani vystupu.
Koukas na to z pohledu HTML, nicmene v ramci Nette obsahem sablony nemusi byt vzdy vyhradne HTML. Rendering by dle meho nazoru nemel samovolne menit tebou vyprodukovany obsah do podoby o ktere si „mysli“, ze je spravna.
Makro contentType bych tedy bral jako moznost pretizeni hodnoty v HttpResponse, nikoliv jako jeho nahradu. Je to imho mocny nastroj, ale z meho pohledu muze pusobit i hodne problemu.
Dovedu si predstavit HTML kodera, ktery si udela include na sablonu ve ktere nekdo predtim modifikoval Content-Type. Vysledek pak bude jiste uzasny. :-)
Nerikam, ze je to takto spatne, jen to je z meho pohledu dost nepredvidatelne chovani a urcite by si to zaslouzilo varovani v dokumentaci sablon.
- kravčo
- Člen | 721
grivaldu napsal(a):
To s tebou nesouhlasim, aplikace muze vratit Content-Type v response absolutne nezavisle na tom, co je napsano v sablone.
Samozrejme že môže, ale je to správne?
… Sablona muze byt napr. uplne prazdna a presto muze aplikace rict, ze content, ktery vraci by mel byt XML, JSON ci cokoliv jineho.
Ktorá rozumná web aplikácia vracia prázdny výstup? (vygenerovaný šablónou)
… Primarne by aplikace mela rikat, co bude vystupem, nikoliv az sablona urcena k formatovani vystupu.
Predsa práve šablóna hovorí o tom, ako bude výstup formátovaný (aj v akom jazyku), tak kto to môže vedieť lepšie?
Máme view Articles:recent
= odkaz na najnovšie články a
šablóna je napísaná v HTML. Raz sa rozhodneme spraviť z toho feed.
Všetko čo by malo byť treba zmeniť je šablóna – je to len iný formát
výstupu, a žiadny zásah do aplikačnej logiky by nemal byť potrebný (a
nemyslím si že zásahy do aplikačnej logiky sú vždy zlo). Z hľadiska UX
to síce nie je najlepšie riešenie, ale táto zmena sa nemá prečo týkať
iných častí ako šablóny (vrátane text/html
→
application/rss+xml
)
Koukas na to z pohledu HTML, nicmene v ramci Nette obsahem sablony nemusi byt vzdy vyhradne HTML. Rendering by dle meho nazoru nemel samovolne menit tebou vyprodukovany obsah do podoby o ktere si „mysli“, ze je spravna.
To si strelil vedľa…
Makro contentType bych tedy bral jako moznost pretizeni hodnoty v HttpResponse, nikoliv jako jeho nahradu. Je to imho mocny nastroj, ale z meho pohledu muze pusobit i hodne problemu.
Makro {contentType ct}
nie je (a nechce byť) náhradou
nastavenia Content-Type
v HttpResponse
. Ten má
samozrejme podstatne širšie využitie a často so šablónami nijako
nesúvisí. Makor je len spôsobom, ako na jednom mieste (v šablóne)
nastaviť formu aj obsah
výstupu.
Dovedu si predstavit HTML kodera, ktery si udela include na sablonu ve ktere nekdo predtim modifikoval Content-Type. Vysledek pak bude jiste uzasny. :-)
Makro {contentType ct}
samozrejme dáva zmysel len na začiatku
layoutu príp. hlavnej šablóny. Napísať blbosť sa dá vždy, z rovnakého
dôvodu by sme mohli napríklad zakázať neescapovaný výstup.
Nerikam, ze je to takto spatne, jen to je z meho pohledu dost nepredvidatelne chovani a urcite by si to zaslouzilo varovani v dokumentaci sablon.
Myslím, že keby boli v dokumentácii všetky varovania tohto stupňa, ťažko by sa medzi nimi hľadala tá dokumentácia…
/// no offense plz