我正在尝试在生产环境中测试我的应用程序。问题是Assetic无法正常工作。
未加载css文件和js文件。
这就是我的所作所为:
$kernel = new AppKernel('prod', true);
我完成了命令:
php app / console cache:clear --env = prod --no-debug php app / console assetic:dump --env = prod --no-debug
到目前为止,没有问题,我的文件已经创建:
01:07:26 [file+] /var/www/visual-immersion/app/../web/js/b0c2086.js
01:07:26 [file+] /var/www/visual-immersion/app/../web/js/a49caf1.js
01:07:26 [file+] /var/www/visual-immersion/app/../web/css/a580ac9.css
但是当我启动我的网页时,没有css,没有js。如果我检查我的源代码页,我可以看到:
<link rel="stylesheet" type="text/css"href="/css/a580ac9_part_1_home_1.css">
<link rel="stylesheet" type="text/css" href="/css/a580ac9_layout_2.css">
<link rel="stylesheet" type="text/css" href="/css/a580ac9_style_3.css">
<link rel="stylesheet" type="text/css" href="/css/a580ac9_font_4.css">
<link rel="stylesheet" type="text/css" href="/css/a580ac9_responsive_5.css">
<link rel="stylesheet" type="text/css" href="/css/a580ac9_animations_6.css">
<link rel="stylesheet" type="text/css" href="/css/a580ac9_personalized-responsive_7.css">
好像我在开发环境中!
所以我也在dev env中清理了我的缓存,并重新开始我的流程以刺激env ...没有成功。
你知道什么是问题吗?
我添加了我的config.yml:
imports:
- { resource: parameters.yml }
- { resource: security.yml }
framework:
#esi: ~
#translator: { fallback: %locale% }
secret: %secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_proxies: ~
session: ~
fragments: ~
# Twig Configuration
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
# Assetic Configuration
assetic:
debug: %kernel.debug%
use_controller: false
bundles: [VisualImmersionAdminBundle, VisualImmersionSiteBundle]
#java: /usr/bin/java
filters:
cssrewrite: ~
#closure:
# jar: %kernel.root_dir%/Resources/java/compiler.jar
#yui_css:
# jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar
# Doctrine Configuration
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
# if using pdo_sqlite as your database driver, add the path in parameters.yml
# e.g. database_path: %kernel.root_dir%/data/data.db3
# path: %database_path%
orm:
auto_generate_proxy_classes: %kernel.debug%
auto_mapping: true
# Swiftmailer Configuration
swiftmailer:
transport: gmail
username: contact@visual-immersion.com
password: mypassword
编辑:
我用资产重试了这个程序:安装没有成功。
编辑2:
在我的网络浏览器开发工具中,如果我添加以下行:
<link rel="stylesheet" type="text/css" href="/css/a580ac9.css">
这是工作。我真的认为Assetic将文件加载为dev env而不是prod env。 有什么想法吗?
编辑3:
我添加布局或托管的css文件,如果它可以帮助...
{% stylesheets '@VisualImmersionSiteBundle/Resources/public/css/*' filter='cssrewrite'
'css/stylesheets/layout.css'
'css/stylesheets/style.css'
'css/stylesheets/font.css'
'css/stylesheets/responsive.css'
'css/stylesheets/animations.css'
'css/stylesheets/personalized-responsive.css'
%}
<link rel="stylesheet" type="text/css" href="{{ asset_url }}">
{% endstylesheets %}
编辑4:
我试图像这样更改我的样式表过滤器:
{% stylesheets filter='cssrewrite'
'css/stylesheets/*'
'bundles/visualimmersionsite/css/*'
%}
但没有成功。
答案 0 :(得分:2)
尝试使用:
php app/console assets:install web --symlink
这样,您不必拥有每个捆绑包资源的副本,而是拥有符号链接,因此不需要更新。
来自docs:
使用cssrewrite过滤器时,请不要使用CSS文件 @AcmeFooBundle语法。
尝试这种方式:
{% stylesheets 'bundles/acme_foo/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
答案 1 :(得分:2)
将prod设置为false并不是正在发生的事情。
您将环境设置为prod并调试为false:
class Kernel ...
public function __construct($environment, $debug)
答案 2 :(得分:1)
Assetic not creating combined links
它确实有效。我一点都不明白。对于prod工作,你必须将'prod'设置为false。