Ošetření neplatného odkazu na obrázek

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
buffus
Člen | 101
+
0
-

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
+
+1
-

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
+
0
-

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
+
0
-

ja pouzivam helper, ktoremu predam id obrazku a poriesi, ze ak obrazok neexistuje, vrati default.jpg

David Kudera
Člen | 455
+
+1
-

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