Problém s escapováním proměnné
- Ladis-s
- Člen | 53
Mám problém, že se mi nechce vypsat proméná, která nemá být escapována.
Takto ji vypisuji:
<?php
<a href="{!$file['path']}">{!$file['path']}</a>
?>
a takto je vypsána:
<?php
<a href="C:%5Cdev%5Cwww%5Cissuelog%5Cupload%5Catt0011-2011_08_08-16_08_23.jpg">C:\dev\www\issuelog\upload\att0011-2011_08_08-16_08_23.jpg</a>
?>
Problém je v tom, že do href parametru mi ji escapuje vždy.
Netušíte čím to je?
- Filip Procházka
- Moderator | 4668
Netuším a ani tušit nechci. Proč ti proboha vadí, že je escapovaná?
Editoval HosipLan (8. 8. 2011 17:06)
- na1k
- Člen | 288
To bude tím, že do odkazu namísto URI cpeš nějakou lokální cestu na disku. To, že zadání cesty do adresního políčka ve většině prohlížečů soubor otevře je jedna věc, ale v href to podle specifikace nemá co dělat.
( Když vypisuješ proměnné pomocí Latte, jen výjimečně potřebuješ
použít vykřičník. Můžeš zkusit použít
n:href="$file['path']"
, ale asi dopadneš stejně. )
- Majkl578
- Moderator | 1364
Ty by sis měl hlavně dostudovat princip, jak webové aplikace fungují.
Přes HTTP nemůžeš odkazovat lokální adresou ve filesystemu. Musíš
odkazovat tak, aby cesta byla platná v rámci HTTP a server ji uměl rozpoznat
a zpracovat. Přičemž k takové adrese nemusí ani existovat ekvivalentní
soubor na disku.
V Nette bys měl veřejně dostupné soubory ukládat:
a) do nějaké veřejné podsložky ve www,
b) ukládat někam skrytě a soubory servírovat presenterem.
Pravidlo č. 1: Do Latte nikdy necpi PHP bloky. V krajní nouzi lze použít
makro {? ... }
, které se chová stejně jako
<?php ... ?>
.
Pravidlo č. 2: Dodržuj pravidlo č. 1.