Mam problem s obrazkami

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

Ahoj,

je to asi týždeň, čo sa borím s Nette. Prelúskal som takmer všetky tutoriály a tak som sa rozhodol, že sa pokúsim o prvú aplikaciu postavenú na Nette a celkom sa mi darilo až do dnes. Práve asi 4 hodiny riešim takú haluz a už neviem ako ďalej, takže to nejdem zdržovať. Mám takýto nejaký kód:

<?php
$image = $basePath.'/fotoalbum/'.$image_filename; // $image_filename = názov súboru (.jpg)
                                                  // čo sa ťahá z DB

/* A teraz toto bez problemu funguje a obrazok sa na vystupe zobrazi: */
?>
<img src="{$image}">
<?php
/* Toto vsak uz nechce fungovat a stale to vyhadzuje takuto chybu v Ladenke:
   Unknown image type or file '/sommnew/fotoalbum/xxxxx.jpg' not found.
   ...
   throw new Exception("Unknown image type or file '$file' not found.");
*/
$imagesize = getImageSize($image);

/* Skusal som aj toto s rovnakym vysledkom */
$image = Image::fromFile($basePath.'/fotoalbum/'.$image_filename);

/* Jedine co funguje je absolutna adresa */
$image = Image::fromFile('http://localhost/sommnew/fotoalbum/'.$image_filename);
?>

Prosim vas, netusite kde moze byt problem?

Brano Zvolensky

Ondrej
Člen | 110
+
0
-

<?php
/* Toto vsak uz nechce fungovat a stale to vyhadzuje takuto chybu v Ladenke:
Unknown image type or file ‚/sommnew/fotoalbum/xxxxx.jpg‘ not found.

throw new Exception(„Unknown image type or file ‚$file‘ not found.“);
*/

jestli do $basePath davas /sommnew tak se to vztahuje k rootu serveru a ten obrazek pak neexistuje, coz se da vycist i z chybove hlasky ;). V basePath bych ocekaval neco jako /var/www/projekt/document_root/ nebo na windows c:\wamp\www\projekt\document_root

brazvo
Člen | 15
+
0
-

No ja som trosku pozmenil adresarovu strukturu, tak ze som aj v index.php posunul definicie adresarov o uroven vysie. Viem je to trosku nestandartne, ale kedze to pojde na hosting, kde uz je dana nejaka struktura adresarov, tak som to musel takto riesit, ledaze by som vytvoril este jeden index.html, ktory by redirectoval do document_root zlozky.

brazvo
Člen | 15
+
0
-

Napadá ma jediný dôvod prečo to tak je. Keďže na výstupe to funguje a vo funkcii getImageSize() nie, tak mam pocit, že getImageSize() v tomto prípade vyžaduje skutočnú cestu ku obrázku vzhľadom ku skriptu, z ktorého je funkcia volaná. A keďže sa tá funkcia volá na úrovni view, ktorý má skutočnú adresu /sommnew/app/templates/Gallery/default.php, tak voči skriptu je adresa obrázku takáto ../../../fotolbum/xxxx.jpg. Takže mi nič iné nezostávalo len buďto natvrdo zadať takú adresu, alebo zvoliť vyskladanie absolutnej adresy aj so serverom:

<?php
$imgUrl = 'http://'.$_SERVER['SERVER_NAME'].$basePath.'/fotoalbum/'.$image_filename
?>

Teraz mam lamácku otázku pre skúsenejších. Chcem si len potvrdiť, či som správne pochopil tú MVP štruktúru. Mám totižto dilemu, či riešim to správne. Vrátim sa k tej Galérii. Postup je asi takýto:

User klikne Galéria → Presenter zavolá model, ktorý vytiahne z DB fotoalbumy a obrázky → Model vrati Fotoalbumy a obrázky presenteru → presenter priradí k jednotlivým obrázkom idčka fotoalbumov → presenter odovzdá do view polia s fotoalbumami a obrázkami → view spracuje polia a priradí jednotlivé obrázky k tým správnym fotoalbumom a vykreslí na obrazovku v cykloch foreach.

A teraz tá otázka. Aká by mala byť posledná fáza? Je správne to spracovávať na úrovni view, alebo by sa mala volať na to nejaká továrnička na úrovni presenteru? Priznám sa, že v tom mám ešte riadny hokej a už sa strácam v tých pojmoch a dojmoch. :)

Aurielle
Člen | 1281
+
0
-

Co zkusit

$imgUrl = WWW_DIR . '/fotoalbum/' . $image_filename;