Symfony 4/Twig模板中引入资源(CSS、JS)的问题
Symfony 4 直接引用/public目录下CSS文件的方法
别担心,完全可以按照你喜欢的方式把静态资源放在public目录下,不用非得遵循官方推荐的/assets文件夹(毕竟工具是为我们服务的嘛)。既然你已经装好了asset包,直接按下面的步骤来就行:
1. 直接在Twig模板中使用asset()函数
假设你的CSS文件放在public/css/main.css,那在Twig基础模板里直接这么写就行:
<link rel="stylesheet" href="{{ asset('css/main.css') }}">
asset()函数默认会指向项目的public根目录,所以你只需要写public目录下的相对路径就好,不用加/public前缀。
2. (可选)配置资源版本控制(优化缓存)
如果想避免浏览器缓存旧的CSS文件,可以在config/packages/framework.yaml里配置asset的版本信息:
framework: assets: version: 'v202405' # 随便改个版本号,更新资源时改这个就行 version_format: '%%s?version=%%s'
这样生成的链接会变成/css/main.css?version=v202405,方便强制浏览器加载新资源。
为什么这么做可行?
Symfony推荐/assets文件夹主要是为了配合前端构建工具(比如Webpack Encore)做资源编译、压缩这些操作,但如果你的项目不需要复杂的前端构建流程,直接把静态资源放在public目录下是完全合理的——毕竟public本身就是Nginx/Apache直接对外暴露的根目录,访问起来更直接。
内容的提问来源于stack exchange,提问作者yevg
相关产品推荐
相关产品推荐

