Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Problem ze ścieżkami do obrazków w CSS
Forum PHP.pl > Forum > PHP > Frameworki
Sajrox
Witam,

Mam taką strukturę katalogów (tylko część):

[zend]
---[public]
------ .htaccess
------ index.php
------ [admin]
---------- [images]
---------- [css]
[application]
------ Bootstrap.php
[...]


Lokalizacja zdjęć to:
public -> admin -> images

Lokalizacja css:
public -> admin -> css

Gdy w pliku style .css wtsawię np:

  1. .klasa { background: url(tlo.gif); }


w .htaccess:

  1. RewriteEngine On
  2. RewriteCond %{REQUEST_FILENAME} -s [OR]
  3. RewriteCond %{REQUEST_FILENAME} -l [OR]
  4. RewriteCond %{REQUEST_FILENAME} -d
  5. RewriteRule ^.*$ - [NC,L]
  6. RewriteRule ^.*$ index.php [NC,L]
  7.  
  8. RewriteRule tlo.gif admin/images/tlo.gif [L,NC]


Cały ten kod nie chce wyświetlić obrazka tlo.gif

Jednak gdy wstawie do pliku z widokiem:
  1. <img src="admin/images/tlo.gif">

To zdjęcie się wyświetla bez problemu, czyli ścieżka "admin/images/tlo.gif" jest ok.

Czemu nie działa to w mod_rewrote ?
 
batman
Używaj ścieżek bezwzględnych. Inaczej co chwilę będziesz miał problemy ze znikającymi obrazkami/css/js.
Sajrox
czyli po prostu mam podawać w stylach np:

./admin/images/tlo.gif

  1. .klasa {background: url('./admin/images/logo.gif');}


---
Edit

Wszystko było ok do momentu gdy dodałem w przeglądarce do adresu http://localhost/www/zend/index/

Znikneły style i obrazki :/

Już rozumiem o co chodzi z tą ścieżką bezwzględną ale kiedy ją podaje dla styli to za cholerę nie chce się wyświetlic :/

Teraz mam w
index.php
  1. define('DIR_CSS', '../application/modules/admin/layouts/css/');


Bootstrap.php
  1. // ...
  2.  
  3. $view->headLink()->appendStylesheet(DIR_CSS.'style.css');
  4.  
  5. //...


Może pomożecie skonfigurować ścieżkę bwzwględna dla styli ?
  1. // Define path to application directory
  2. define('APPLICATION_PART', 'admin');
  3. define('BASE_PATH', realpath(dirname(__FILE__) . '/../'));
  4. define('APPLICATION_PATH', BASE_PATH . '/application');
  5. define('DIR_CSS', '../application/modules/admin/layouts/css/');
  6. define('DIR_IMAGES', '../application/modules/admin/layouts/images/');


będe bardzo wdzięczny smile.gif

Próbuje z:
  1. define('DIR_CSS', BASE_PATH.'/public/admin/css/');
  2. // zwraca: C:\wamp\www\zend_quickstart/public/admin/css/


Ale też nic sad.gif
batman
./ = bieżący katalog
../ = katalog wyżej
/ = główny katalog

Użyj bramki nr 3 wraz z pełną ścieżką do zasobu, np /admin/images/jakies-zdjecie.jpg. Zarówno w css, jak i w html w znaczniku img. I usuń z .htaccess regułkę odpowiedzialną za podmianę ścieżki.
Sajrox
Rozwiązałem to trochę inaczej smile.gif

Jak chce wstawić znacznik img w kodzie to w ściezce podaje  (w layout.phtml):

  1.  
  2. echo $this->baseUrl()
  3.  
  4. // <img src="<?php echo $this->baseUrl() ?>/admin/images/logo.gif">
  5.  





Css wywołuje (w layout.phtml):

  1.  
  2. echo $this->headLink()->prependStylesheet($this->baseUrl().'/'.APPLICATION_PART.'/css/style.css');
  3.  




To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.