ThinkPHP5.1如何在模版中输出public/static静态资源文件的URL路径?

因为这个项目有可能不放在WEB根目录,会放在子目录中,也有可能会经常修改服务器的IP(这个项目在外网和内网都有开放,但是外网和内网开放的URL不同,甚至还做了虚拟目录,这个需求确实有点奇怪),所以不能写死在模版里面

我试过$_SERVER的script_filename,script_name,pathinfo,REQUEST_URI等变量,他们在使用了pathinfo之后,会把pathinfo的信息也带入进去,导致使用dirname获取这些变量所在目录,获取到的并不是真实的index.php所在的public目录的URL

而且也不能通过判断url中的index.php来确定,因为有可能服务器还做了URL重写,不一定在URL中存在index.php这个字符串,不能通过字符串切割来解决。

假如当前页面是192.168.1.1/subDir/index.php/index/admin/test,那么直接在模版里面写static/js/的话会被浏览器解析到192.168.1.1/subDir/index.php/index/admin/test/static/js/上,所以这种方法无效

有什么其他办法能获取public/static静态资源文件的URL路径吗?

我试过直接在模版里面写__STATIC__或者__ROOT__,结果都是直接浏览器里面原样输出

https://img2.mukewang.com/5c8f421f0001f87004730307.jpg
https://img1.mukewang.com/5c8f422000015ebb04790238.jpg

弑天下
浏览 5131回答 4
4回答

慕丝7291255

你可以全局定义一些js变量,像这样把模板变量放进去就好了

慕的地8271018

// 视图输出字符串内容替换 'view_replace_str' => [ '__ADMIN__'=>'/static/admin', ], 在config.php 里加个自定义路径就可以了
打开App,查看更多内容
随时随地看视频慕课网APP