要解决 Undefined constant "core\basic\ISURL" 的问题,可以在 /core/basic/Url.php 文件中定义 ISURL 常量。在文件顶部添加以下代码:
define('ISURL', false); // 或者根据需要设置为 true
完整代码如下:
1 <?php 2 /** 3 * @copyright (C)2016-2099 Hnaoyun Inc. 4 * @author XingMeng 5 * @email [email protected] 6 * @date 2017年11月6日 7 * 生成指定模块下控制器方法的跳转路径 8 */ 9 namespace core\basic; 10 11 define('ISURL', false); // 或者根据需要设置为 true 12 13 class Url 14 { 15 // 存储已经生成过的地址信息 16 private static $urls = array(); 17 18 // 接收控制器方法完整访问路径,如:/home/Index/index /模块/控制器/方法/.. 路径,生成可访问地址 19 public static function get($path, $suffix = null) 20 { 21 if (strpos($path, 'http') === 0 || ! $path) { 22 return $path; 23 } 24 25 $path = trim_slash($path); // 去除两端斜线 26 27 if (! isset(self::$urls[$path])) { 28 29 $path_arr = explode('/', $path); // 地址数组 30 31 if ($suffix && Config::get('app_url_type') == 2 && strrpos(strtolower($_SERVER["SCRIPT_NAME"]), 'index.php') !== false) { 32 $url_ext = Config::get('url_rule_suffix'); // 伪静态文件形式 33 } elseif (Config::get('app_url_type') == 1 || Config::get('app_url_type') == 2) { 34 $url_ext = '/'; // pathinfo目录形式 35 } else { 36 $url_ext = ''; 37 } 38 39 // 路由处理 40 if (! ! $routes = Config::get('url_route')) { 41 foreach ($routes as $key => $value) { 42 // 去除两端斜线 43 $value = trim_slash($value); 44 $key = trim_slash($key); 45 46 // 替换原来正则为替换内容 47 if (preg_match_all('/\(.*?\)/', $key, $source)) { 48 foreach ($source[0] as $kk => $vk) { 49 $key = str_replace($vk, ' . ($kk + 1), $key); 50 } 51 } 52 53 // 替换原来替换内容为正则 54 if (preg_match_all('/\$([0-9]+)/', $value, $destination)) { 55 foreach ($destination[1] as $kv => $vv) { 56 $value = str_replace($destination[0][$kv], $source[0][$vv - 1], $value); 57 } 58 } 59 60 // 执行匹配替换 61 if (preg_match('{' . $value . '$}i', $path)) { 62 $path = preg_replace('{' . $value . '$}i', $key, $path); 63 } elseif (preg_match('{' . $value . '\/}i', $path)) { 64 $path = preg_replace('{' . $value . '\/}i', $key . '/', $path); 65 } 66 } 67 } 68 69 // 域名绑定处理匹配 70 $cut_str = ''; 71 if (! ! $domains = Config::get('app_domain_bind')) { 72 foreach ($domains as $key => $value) { 73 $value = trim_slash($value); // 去除两端斜线 74 if (strpos($path, $value . '/') === 0) { 75 $cut_str = $value; 76 $server_name = get_http_host(); 77 if ($server_name != $key) { // 绑定的域名与当前域名不一致时,添加主机地址 78 $host = is_https() ? 'https://' . $key : 'http://' . $key; 79 } else { 80 $host = ''; 81 } 82 break; 83 } 84 } 85 } 86 87 // 入口文件绑定匹配 88 if (defined('URL_BIND') && $path_arr[0] == M) { 89 $cut_str = trim_slash(URL_BIND); 90 } 91 92 // 执行URL简化 93 if ($cut_str) { 94 $path = substr($path, strlen($cut_str) + 1); 95 } 96 97 // 保存处理过的地址 98 if ($path) { 99 self::$urls[$path] = $host . url_index_path() . '/' . $path . $url_ext; 100 } else { 101 self::$urls[$path] = $host . url_index_path(); // 获取根路径前置地址 102 } 103 } 104 return self::$urls[$path]; 105 } 106 107 // 生成前端地址 108 public static function home($path, $suffix = null, $qs = null) 109 { 110 if (! isset(self::$urls[md5($path . $suffix . $qs)])) { 111 $url_rule_type = Config::get('url_rule_type') ?: 3; 112 $url_rule_suffix = Config::get('url_rule_suffix') ?: '.html'; 113 114 if ($suffix === true) { 115 $suffix = $url_rule_suffix; 116 } elseif ($suffix === false) { 117 $suffix = ''; 118 } else { 119 $suffix = '/'; 120 } 121 122 // 去除默认模块及控制器部分 123 $path = trim($path, '/'); 124 $path = str_replace('home/Index', '', $path); 125 $path = trim($path, '/'); 126 127 if (! $path) { // 地址前缀 128 if ($url_rule_type == 1) { 129 $link = SITE_INDEX_DIR . '/index.php/'; 130 } elseif ($url_rule_type == 2) { 131 $link = SITE_INDEX_DIR . '/'; 132 } else { 133 $link = SITE_INDEX_DIR . '/?'; 134 } 135 } else { 136 switch ($url_rule_type) { 137 case '1': // 普通模式 138 $qs = $qs ? "?" . $qs : ''; 139 $link = SITE_INDEX_DIR . '/index.php' . '/' . $path . $suffix . $qs; 140 break; 141 case '2': // 伪静态模式 142 $qs = $qs ? "?" . $qs : ''; 143 $link = SITE_INDEX_DIR . '/' . $path . $suffix . $qs; 144 break; 145 case '3': // 兼容模式 146 $qs = $qs ? "&" . $qs : ''; 147 $link = SITE_INDEX_DIR . '/?' . $path . $suffix . $qs; 148 break; 149 default: 150 error('地址模式设置错误,请登录后台重新设置!'); 151 } 152 } 153 //优化分站超链接 154 if( ISURL!==TRUE && strpos($link,'http') == false && cookie('city')!=='' && cookie('city')!==null ){ 155 if( $path == '' && $suffix === $url_rule_suffix ){ 156 $link = $suffix; 157 } 158 $link = '/'.cookie('city').$link; 159 } 160 self::$urls[md5($path . $suffix . $qs)] = $link; 161 } 162 return self::$urls[md5($path . $suffix . $qs)]; 163 } 164 }
这样就可以解决 Undefined constant "core\basic\ISURL" 的问题。
本次修改是基于PbootCMS v3.2.5 版本修改。
标签:core,qs,constant,suffix,url,value,key,path,Undefined From: https://www.cnblogs.com/shenjingwa/p/18518724