2012-02-29 16 views
6

Próbuję zrozumieć pakiet aktywów symfony2. Próbuję użyć wtyczki jquery, która używa własnego pliku css. Wrzuciłem wszystko w mybundle/Resources/public a następnie podzielone na images/javascript/css i/Obsługa obrazów względnych przy użyciu aktywów

css wtyczek używa ścieżki względne, aby uzyskać obrazy jak ../images/sprite.png

Korzystanie assetic służyć plik CSS:

{% stylesheets 
    '@MyBundle/Resources/public/css/mycss.css' 
%} 
<link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

Ścieżka wygenerowana przez assetic to /app_dev.php/css/mycss.css, co jest zgodne z prawdą. Oczywiście, względne obrazy nie działają już teraz. Ponieważ same pliki znajdują się w mybundle/Resources/public, a nie w/images/

Podczas próby użycia filtru cssrewrite patenty są przepisywane na: http://server.com/Resources/public/images/sprite.png. Ale to nie jest poprawne, pliki tam nie są.

Jak mogę wyświetlać obrazy względne za pomocą aktywów trwałych?

+0

Zadałem podobne pytanie: http://stackoverflow.com/questions/9500573/path-of-assets-in-css-files-in-symfony2 (możesz zobaczyć, że moje próby rozwiązania tego również) – apfelbox

Odpowiedz

4

Można przeliterować ścieżkę wyjściową i nie używać w ogóle programu cssrewrite.

{% stylesheets output="bundles/zaysoarbiter/css/forms2.css" 
    '@ZaysoArbiterBundle/Resources/public/css/forms2.css' 
%} 

A potem oczywiście użyć assets:install skopiować obrazy do web/bundles/bundle/images lub gdziekolwiek. Jeśli chodzi o przeglądarkę, twoje css i obrazy znajdują się teraz względem siebie. W produkcji użyjesz assetic:dump, aby przenieść faktycznie wygenerowany plik css.

+2

Podczas korzystania z tego rozwiązania ścieżka w środowisku deweloperów dla obrazów to: app_dev.php/bundles/mybundle/images/sprite.png, co powoduje wyjątek NotFoundHttpException. Czy masz również rozwiązanie do obsługi ich dev env? – dvcrn

+0

Ponieważ obrazy nie zmieniają się, używam tylko asset: install, aby zainstalować je na moim komputerze. Podczas gdy css jest generowany dynamicznie, obrazy po prostu tam są. Możesz użyć opcji --symlink, aby uniknąć konieczności wykonywania rzeczywistych kopii. – Cerad

+0

Chyba źle opisałem mój problem. Kiedy w moim URLu znajduje się "app.php" lub "app_dev.php" (np. App.php/bundles/mybundle/images/sprite.png), wynikiem jest 404. Po opuszczeniu app.php/app_dev .php (np: bundles/mybundle/images/sprite.png), ścieżka jest w porządku, a obraz jest wyświetlany. Assetic obsługuje pliki CSS w bieżącym środowisku. Jeśli używasz app_dev.php, jest to również we wszystkich adresach URL generowanych stylów aktywów. Oznacza wszystkie względne patenty obrazu (w plikach .css) również używają app_dev.php, co skutkuje wspomnianym powyżej adresem URL. – dvcrn

Powiązane problemy