我有我的自定义资源目录,其中包含一些文件:
/longpathtoSymfony/src/MyOwn/Bundle/MyOwnBundle/Resources/public
|-- bootstrap
| |-- css
| | |-- bootstrap-theme.css
| | |-- bootstrap-theme.min.css
| | |-- bootstrap.css
| | |-- bootstrap.min.css
| | `-- carousel.css
| |-- fonts
| | |-- glyphicons-halflings-regular.eot
| | |-- glyphicons-halflings-regular.svg
| | |-- glyphicons-halflings-regular.ttf
| | `-- glyphicons-halflings-regular.woff
| `-- js
| |-- bootstrap.js
| |-- bootstrap.min.js
| |-- holder.js
| `-- respond.min.js
|-- css
| `-- custom.css
|-- fonts
| |-- glyphicons-halflings-regular.svg
| |-- glyphicons-halflings-regular.ttf
| `-- glyphicons-halflings-regular.woff
|-- images
|-- img
`-- js
|-- html5shiv.js
|-- jquery-1.10.2.min.map
|-- jquery.js
`-- less-1.3.3.min.js
并且所有js和css文件都正确放入公用文件夹,因此我可以访问bootstrap/css/xxx.css
个文件,依此类推 字体文件。
我不知道应该怎么做才能将它们复制到web
目录。如果我尝试php app/console assetic:dump
,则只复制css和js文件:
php app/console assetic:dump
Dumping all dev assets.
Debug mode is on.
18:41:17 [file+] /longpathToSymfony/app/../web/css/bef717e.css
18:41:17 [file+] /longpathToSymfony/app/../web/css/bef717e_bootstrap.min_1.css
18:41:17 [file+] /longpathToSymfony/app/../web/js/6f9045a.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/6f9045a_html5shiv_1.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/6f9045a_respond.min_2.js
18:41:17 [file+] /longpathToSymfony/app/../web/css/0c1e28e.css
18:41:17 [file+] /longpathToSymfony/app/../web/css/0c1e28e_carousel_1.css
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509_jquery_1.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509_bootstrap.min_2.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509_holder_3.js
18:41:17 [file+] /longpathToSymfony/app/../web/js/0aa0509_less-1.3.3.min_4.js
我该怎么做才能包含字体文件?我与动态下载的jquery-1.10.2.min.map
存在同样的问题。
有没有办法对symfony" hey把它放在web资源文件夹中,因为我的一些组件需要它"?
答案 0 :(得分:18)
我遇到了同样的问题,我只是尝试使用以下方法作为解决方法。似乎到目前为止工作。
{% stylesheets
output='assets/fonts/glyphicons-halflings-regular.ttf'
'bundles/bootstrap/fonts/glyphicons-halflings-regular.ttf'
%}{% endstylesheets %}
请注意省略任何输出,这意味着模板上没有显示任何内容。当我运行assetic:dump
时,文件将被复制到所需位置,并且css包含按预期工作。
答案 1 :(得分:9)
在树枝上你应该有一个javascripts块,有这样的东西:
{% block javascripts %}
{% javascripts
'bundles/myown/bootstrap/js/bootstrap.js'
'bundles/myown/bootstrap/js/respond.js'
'bundles/myown/js/*'
%}
<script src="{{ asset_url }}"></script>
{% endjavascripts %}
{% endblock %}
同样适用于你的CSS。
{% block stylesheets %}
{% stylesheets
'bundles/myown/bootstrap/css/bootstrap-theme.css'
'bundles/myown/css/*'
filter='cssrewrite'
%}
<link rel="stylesheet" href="{{ asset_url }}">
{% endstylesheets %}
{% endblock %}
现在,您可以使用以下命令安装这些资产以便于开发(app_dev.php)。
php app/console cache:clear --env=dev
php app/console assets:install web --symlink
此时,您应该在/ longpathtoSymfony / web / bundles / myown中看到链接回捆绑资源的符号链接文件夹。符号链接选项的好处是您可以更改bundle文件夹中的脚本,而不必运行assets:install命令来查看浏览器中的这些更改。刷新。
准备好转移到生产时,请使用assetic:dump命令。 这只适用于css,js和图像。 所以你需要手动将fonts文件夹移动到web目录中,或者编写自己的脚本来移动那些东西给你
确保让Assetic在config.yml
中了解您的捆绑包assetic:
bundles: [ 'MyOwnBundle' ]
现在您可以使用以下内容转储生产就绪资产
php app/console cache:clear --env=prod
php app/console assetic:dump --env=prod
因此,当您在浏览器中查看它时,只需删除app_dev.php,它应该从转储到web / css和web / js文件夹中的单个文件中加载您的css和javascript。这只是使用这些工具的一种方法,但在大多数情况下它似乎对我有用。
答案 2 :(得分:0)
使用php app/console assets:install target [--symlink]
命令
使用asset()
twig函数访问您的字体文件:
asset('bundles/myown/fonts/glyphicons-halflings-regular.ttf')
* 验证您的资产功能路径
答案 3 :(得分:0)
部分答案取自here
如何为js,css和fonts设置资源路径
{% stylesheets
'@bootstrap_css'#this is some custom or bundled files which you want to include
'bundles/mybundle/css/custom.css'
filter="cssrewrite"
output='some/path/to.css'
%}
这部分将构建在一个文件中显示的所有css并将其放入路径中,该路径也在代码示例中显示。
现在to.css将放在/web/some/path/to.css
同样适用于JS:
{% javascripts
'@jquery' #this is some custom or bundled files which you want to include
'@bootstrap_js'
'bundles/fosjsrouting/js/router.js'
output='js/compiled/app.js'
%}
现在,您将拥有构建在1个路径/web/js/compiled/app.js
FY:在最新版本的symfony中,Assetic包不存在于框中 - 它应该通过composer require symfony/assetic-bundle