login  Naam:   Wachtwoord: 
Registreer je!
 Forum

MVC images

Offline Dlol - 17/01/2011 11:12 (laatste wijziging 17/01/2011 11:13)
Avatar van DlolLid Hallo,

Ik ben een site aan het maken volgens het MVC pattern. Het komt er dus op neer dat alles via de index gaat. Wil men naar een andere pagina dan wordt dit:
http://site/eencontroller/actie/args/args/args

Nu levert dit problemen op met het weergeven van mijn images. Stel dat ik bijvoorbeeld volgende code heb op de pagina http://site/eencontroller/actie:
  1. <img src="images/image.png" />

dan probeert hij volgende de link http://site/eencontroller/actie/images/image.png te openen, en die bestaat natuurlijk niet.

Mijn oplossing hiervoor was om een speciale class te maken voor mijn images die ze dan weergeeft. Als de router ontdekt dat er een image opgevraagd wordt, dan laadt hij geen controller in, maar dan laadt hij de image class in, en die geeft dan via de image-functies van php een image terug. Dit werkt, maar het probleem zit 'm nu in dat mijn transparante png's niet goed meer worden weergegeven, met volgend lelijk resultaat tot gevolg:
afbeelding

Heeft iemand een idee hoe ik dit zou kunnen oplossen? De code van mijn Image class is als volgt:
Plaatscode: 140512

Alvast bedankt!

5 antwoorden

Gesponsorde links
Offline Frisbee - 17/01/2011 13:10
Avatar van Frisbee HTML beginner Volgens mij bespaar je jezelf een hoop ellende door een slash aan het begin van je image src te zetten:

  1. <img src="/images/image.png" />
Offline Joost - 17/01/2011 16:17 (laatste wijziging 17/01/2011 16:18)
Avatar van Joost PHP expert Wat een oplossing zou kunnen zijn is dat je een map /static maakt in je webroot. Vermoedelijk werk je ook met Rewrite Engine om URLs te herschrijven naar index.php? Maak daar dan een exceptie voor /static, zodat je met statische bestanden zoals CSS, JS en images gewoon een normale url kan gebruiken in plaats van een idiote PHP oplossing  
Offline Dlol - 17/01/2011 16:51
Avatar van Dlol Lid Een slash toevoegen heb ik al eens geprobeerd en dat werkte ook niet echt...

@Joost: Ik gebruik inderdaad Rewrite Engine, maar ik heb dat klakkeloos gekopiëerd van ergens. Ik heb dus totaal geen kaas gegeten van .htaccess. Ondertussen heb ik wel al een oplossing gevonden voor mijn image class:

  1. imagealphablending($this->_image, false);
  2. imagesavealpha($this->_image, true);


Dat werkt proper, en het voordeel nu is dat ik gewoon overal kan gebruiken: <img src="image.extension"> ipv. de map etc. erbij op te geven omdat nu in de image class zelf het path wordt bepaald. Anderzijds zou het best wel kunnen dat het downloaden van de images dan wat vertraging oploopt natuurlijk. Ik vraag mij nu af of het simpelweg gebruiken van <img src="image.extension"> opweegt tegen de vertraging etc.
Meningen?
Offline Joost - 17/01/2011 17:01
Avatar van Joost PHP expert Sowieso niet jouw oplossing met PHP. Dat vreet alleen maar onnodig geheugen en is hélémaal nergens voor nodig. Als je het zo'n probleem vindt dat je telkens het hele path in moet voeren, kan je dat net zo goed in een constante stoppen die ook beschikbaar is in je view, dan is het simpelweg een constante ervoor plakken (of je bouwt een helper, opties zat).

Enfin, ik gebruik deze RewriteRules:

  1. RewriteEngine On
  2.  
  3. RewriteCond $1 !^(static|robots\.txt)
  4. RewriteRule ^(.*)$ index.php [L]



Offline Dlol - 17/01/2011 21:58 (laatste wijziging 17/01/2011 21:59)
Avatar van Dlol Lid Sorry maar ik ken nog echt niets van .htaccess.. 

Dit is mijn file en de directory van mijn images is inc/css/general/images/
  1. RewriteEngine on
  2.  
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteCond %{REQUEST_FILENAME} !-d
  5.  
  6. RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]


Is het trouwens niet mogelijk om via een regex alles waar .png, .jpg of .gif in staat te rewriten zodat ik het path niet handmatig hoef op te geven? Een constante in mijn view heb ik al aan gedacht, maar die kan ik niet gebruiken in mijn js-bestanden, of ik moet overal op het begin van de pagina toevoegen:
  1. var IMG_DIR = <?php echo CONST_IMG_DIR; ?>;

, maar dat staat ook weer niet echt mooi natuurlijk..
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s