Symfony2-Assetic-ładowanie obrazów w CSS
Mam CoreBundle, który zawiera główne pliki css i obrazy. Teraz mam problem podczas ładowania obrazu z css; obraz nie jest wyświetlany.
background-image:url(../images/file.png)
(z pełną ścieżką działa)
Zainstalowałem zasoby za pomocą polecenia: assets:install web
i mogę zobaczyć pliki graficzne i css pod web/bundles/cmtcore/(css|images)
.
Oto struktura plików wewnątrz pakietu core:
/CoreBundle
/Resources
/public
/css
/main.css
/images
/file.png
A oto jak Ładuję plik css do szablonu:
{% stylesheets '@CmtCoreBundle/Resources/public/css/*' %}
<link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}" />
{% endstylesheets %}
Z góry dziękuję za pomoc. 9 answers
Użyj filtra cssrewrite
z pakietu Assetic
W config.yml:
assetic:
debug: %kernel.debug%
use_controller: false
filters:
cssrewrite: ~
A następnie wywołaj swoje arkusze stylów tak:
{% stylesheets 'bundles/cmtcore/css/*' filter='cssrewrite' %}
<link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}" />
{% endstylesheets %}
Oh i nie zapomnij użyć php app/console assetic:dump
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-28 11:44:38
Było kilka problemów z ccsrewrite:
Filtr CssRewrite nie działa, gdy używa składni @ MyBundle w AsseticBundle do odwoływania się do zasobów. Jest to znane ograniczenie.
Oto wersja php dla cssrewrite:
<?php
foreach ($view['assetic']->stylesheets(array(
'bundles/test/css/foundation/foundation.css',
'bundles/test/css/foundation/app.css',
'bundles/test/css/themes/adapzonManager.css'), array('cssrewrite')) as $url):
?>
<link rel="stylesheet" href="<?php echo $view->escape($url) ?>" />
<?php endforeach; ?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-11 09:58:00
Rozwiązałem problem, postępując zgodnie z instrukcjami na tej stronie: http://www.craftitonline.com/2011/06/symfony2-beautify-with-assetic-and-a-template-part-ii/
Rzeczywisty problem polega na tym, że odwołujesz się do zasobów pakietu bezwzględnie, ale musisz odwoływać się do nich względnie.
{% stylesheets filter='cssrewrite' output='css/*.css'
'bundles/blistercarerisikobewertung/css/*' %}
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" />
{% endstylesheets %}
Wyczyść pamięć podręczną i zainstaluj ponownie zasoby
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-21 15:29:07
Jeśli chodzi o odpowiedź Yanna, w rzeczywistości nie musisz ponownie instalować zasobów po każdej zmianie, jeśli używasz opcji --symlink
.
Zauważ jednak, że uruchomienie skryptu instalacyjnego dostawców nadpisze dowiązania symboliczne, więc musisz usunąć foldery bundles/*
i zainstalować zasoby ponownie za pomocą opcji --symlink
po uruchomieniu skryptu dostawców.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-19 23:28:35
Opracowałem mały pakiet z dodatkowym filtrem, aby rozwiązać ten problem. Możesz go znaleźć na GitHubie: https://github.com/fkrauthan/FkrCssURLRewriteBundle.git
Z tym pakietem notacja @dla assetic działa, jeśli masz ścieżki relativ w pliku css.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-16 18:26:43
Rozwiązałem to używając htaccess:
Moje zasoby są przechowywane w src / Datacode/BudgetBundle/Resources/public|(css|img/js), a parametr wyjściowy assetic jest ustawiony na: bundles/datacodebudget/css / styles.css (w katalogu www)
W moim css używam ścieżki względnej ../ align = "left" /
Oto .reguła htaccess:
# Make image path work on dev
# i.e. /app_dev.php/bundles/datacodebudget/img/glyphicons-halflings-white.png rewrites to /bundles/datacodebudget/img/glyphicons-halflings-white.png
RewriteRule ^app_dev\.php/(.*)/(.*)/img/(.*)$ /$1/$2/img/$3 [L]
Mój css jest ładowany w następujący sposób:
{% stylesheets
'@DatacodeBudgetBundle/Resources/public/css/bootstrap.css'
'@DatacodeBudgetBundle/Resources/public/css/bootstrap-responsive.css'
'@DatacodeBudgetBundle/Resources/public/css/styles.css'
'@DatacodeBudgetBundle/Resources/public/css/chosen.css' output="bundles/datacodebudget/css/styles.css"
%}
<link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
{% endstylesheets %}
W moim config.plik yml, który mam:
assetic:
use_controller: true
Które (bez htaccess rewrite) powoduje, że obrazy nie są ładowane, ponieważ ścieżka względna dla obrazu znajduje się w app_dev.php / bundles/datacodebudget/img / someimage..jpg Użycie filtra cssrewrite również nie działa, ponieważ następnie przepisuje ../ img do./../../../ Resources / public/ img/which resolves to Resources/public / img.
Za pomocą metody htaccess obrazy ładują się dobrze i muszę tylko uruchomić assetic: dump / assets: install, gdy dodaję nowe obrazy lub chcę wypchnąć zmiany do produkcji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-17 18:34:16
Rozwiązałem ten problem trwale tworząc folder 'images' z obrazkami w folderze ' symfony_root / web/'. Result: 'symfony_root / web / images /' - I staje się świetna praca!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-19 15:51:08
Mam podobny problem, rozglądałem się co najmniej od dnia i nie jestem przekonany, czy istnieje dobre praktyczne rozwiązanie tego problemu. Polecam używanie Assetic do obsługi javascript i css, a następnie po prostu umieszczanie obrazów w katalogu docroot swojej strony internetowej. Na przykład, jeśli Masz plik css, który się odwołuje ../ images / file.png, po prostu utwórz folder i obrazy pod swoim docroot i umieść plik.png tam. To zdecydowanie nie jest najlepsze rozwiązanie teoretyczne, ale jedyne To naprawdę działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-27 22:47:28
I "rozwiązałem" to ładując plik css Inaczej:
<link rel="stylesheet" href="{{ asset('bundles/cmtcore/css/main.css') }}" type="text/css" media="all" />
Tak to się robi w Acme / DemoBundle.
Zostawię to pytanie nierozwiązane, bo wydaje się to głupie.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-07 19:51:54