这篇文章将为大家详细讲解有关ThinkPHP5.1里面__PUBLIC__无法生效的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
ThinkPHP5.1 里面__PUBLIC__无法生效的问题
在用PHP
模板的时候需要引用外部的样式文件,之前的版本直接用__PUBLIC__
就可以定位到指定的位置。
<Link href="__PUBLIC__/static/css/main.css" rel="stylesheet" />
但是页面中__PUBLIC__
并没有解析成对应的路径。
在查询TP5.1的文档时候,有这么一句话。“view_replace_str配置参数改成template配置文件的tpl_replace_string配置参数。”所以需要在config/template.php
中设置tpl_replace_string
的值。
我们直接添加这条配置项,代码如下。
'tpl_replace_string' =>[ '__PUBLIC__' => $_SERVER['REQUEST_SCHEME']."://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['SCRIPT_NAME'])),],
你也可以自己设置成固定样式。
'tpl_replace_string' => ['__PUBLIC__'=>'/项目名/public'],
这时候刷新页面看一下,发现还是__PUBLIC__
并没有转义。这里是由于Runtime
下面有缓存文件。把Runtime
下的文件都删除一下,就可以了。
一.index.php 入口文件加入
define('SCRIPT_DIR', rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/\\'));
thinkphp5.1以下版本设置__STATIC__ __JS__ __CSS__等常量thinkphp在think目录的view.php
$baseReplace = [ '__ROOT__' => $root, '__URL__' => $base . '/' . $request->module() . '/' . Loader::parseName($request->controller()), '__STATIC__' => $root . '/static', '__CSS__' => $root . '/static/css', '__JS__' => $root . '/static/js', ];
可以在config中修改和重新定义
// 视图输出字符串内容替换 'view_replace_str' => [ '__IMAGE__' => '/static/images', '__UPLOAD__' =>'/upload', ],
thinkphp5.1版本设置
在config目录的template.php加入
'tpl_replace_string' =>[ '__STATIC__'=> SCRIPT_DIR . '/static', //后台程序css,img,js所在文件 '__COMMON__'=> SCRIPT_DIR . '/common', //前后共有css,img,js所在文件 '__APP__' => SCRIPT_DIR . '/', //定义首页 '__JS__'=> SCRIPT_DIR . '/static/js', //js文件 '__CSS__'=> SCRIPT_DIR . '/static/css', //css文件 '__IMAGE__'=> SCRIPT_DIR . '/static/images', //image文件 ],
关于“ThinkPHP5.1里面__PUBLIC__无法生效的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。