Ošetření neplatného odkazu na obrázek
- buffus
- Člen | 101
Ahoj,
v presenteru:
public function actionImage() {
$image = Image::fromFile('1.png');
$image->send();
}
v šabloně:
<img src="{link image}">
Funguje, zobrazí obrázek. Pokud zdroj obrázku 1.png neexistuje, jak ošetřit, aby se tag pro vložení obrázku vůbec negeneroval?
Lze nějak takto?
{if ??}<img src="{link image}">{/if}
Předem díky.
- amik
- Člen | 118
V zásadě ano, musíš zjistit, zda ten soubor existuje :)
např. takto:
šablona:
{if $imageExists)}<img src="{link image}">{/if}
presenter:
function renderDefault() {
$this->template->imageExists = file_exists($pathToImage); //musíš nějak naplnit pathToImage
}
pozn. file_exists technicky jde volat i přímo v šabloně, ale v zájmu čistoty kódu to nedoporučuji.
Editoval amik (7. 8. 2014 20:14)
- buffus
- Člen | 101
Tohle řešení mě napadlo hned a teď mi mrzí, že jsem ho při pokládání otázky sem neprezentoval. Za to se omlouvám a děkuji za precizní odpověď. Chtěl jsem si spíše ověřit, jestli mi v mých omezených znalostech Nette/PHP neuniká nějaká prostá technika zápisu, hledal jsem totiž původně řešení kolem neplatných odkazů. Díky!
- japlavaren
- Člen | 404
ja pouzivam helper, ktoremu predam id obrazku a poriesi, ze ak obrazok neexistuje, vrati default.jpg
- David Kudera
- Člen | 455
používám něco jako @japlavaren jen s tím rozdílem, že mám makra. Jedno, které nahrazuje za default, ale pak i podmínku, takže to může vypadat asi takhle:
<img n:isImage="some-image" n:src="some-image, 100">
mám na to ale službu a třeba tenhle kód vytvoří miniaturu o šířce 100px