TP v5中Url Compat模式

日期:2019-11-26编辑作者:明星八卦

compatible

到目前为止的5.0.7版本中,route里相关参数不会再压入$_GET与$_REQUEST变量中,比如 index.php/user/blog/id/123 里我们想用 $_GET['id']是取不到的,只能在专门的PARAM环境去取:

对于配置pathinfo的支持,在Nginx作服务器、无数种系统要同时运行的环境,实在是一项很累赘的事情,而又不想很low的多个参数(像m、c、a)构造路由参数,我需要那种不必强制使用pathinfo的还可以伪pathinfo(用一个路由参数如s=/abc/ddd/ddd.html,参数名如route、s、r等)的框架。

$this->request->param('id/d', 0);

目前TP的v5版本下,仅可支持路由解析时的Compat模式,而不支持路由构建时的Compat模式。

用get、request都不行:

增加一个配置项URL_MODE,找到构建Url的类thinkUrl::build方法,在参数组装的部分和脚本名与参数连接处做文章。

$this->request->get('id/d', 0);

// 参数组装
        if (!empty($vars)) {
            // 添加参数
            if (Config::get('url_common_param')) {
                $vars = urldecode(http_build_query($vars));
                $url .= $suffix . ((Config::get('URL_MODE') == static::MODE_COMPAT) ? '&' : '?') . $vars . $anchor;
            } else {
                $paramType = Config::get('url_param_type');
                foreach ($vars as $var => $val) {
                    if ('' !== trim($val)) {
                        if ($paramType) {
                            $url .= $depr . urlencode($val);
                        } else {
                            $url .= $depr . $var . $depr . urlencode($val);
                        }
                    }
                }
                $url .= $suffix . $anchor;
            }
        } else {
            $url .= $suffix . $anchor;
        }
        // 检测域名
        $domain = self::parseDomain($url, $domain);
        // URL组装
        $path_sep = '/';
        if (Config::get('URL_MODE') == static::MODE_COMPAT) {// 兼容模式判断
            $path_sep = '?' . Config::get('var_pathinfo') . '=';
        }
        $url = $domain . rtrim(self::$root ?: Request::instance()->root(), '/') . $path_sep . ltrim($url, '/');

$this->request-> request('id/d', 0);

这对于老版本的用户来说,可能是需要注意的一点。

PS:有人问为什么要继续用TP这种框架,而不是laravel、yii2这些更高大上的呢?答:框架不是关键,关键是人。

本文由必赢437登录发布于明星八卦,转载请注明出处:TP v5中Url Compat模式

关键词:

【必赢437登录】刚刚好

必赢电子游戏娱乐 ,写在前面的话:本以为这故事会继续,留着求婚那天攒成一本书,但是这缘分只给了我故事的开...

详细>>

必赢电子游戏娱乐iOS 开发 -----公司测试打包上传

点击iOS Apps上面包车型大巴Certificates按键,步向证书制作页面。   加上设备 点击浏览器页面的左臂菜单栏中Identifie...

详细>>

将爱未爱,朱律荆棘

空气中的血腥充满了他对我的排斥把我的世界变成一个南极一年四季四个冬季每想念你一次我的世界就长出荆棘冰冷...

详细>>

刚从it培训班出来的学生如何走向工作岗位

必赢电子游戏娱乐 ,          我给大家提几点建议希望能帮助大家渡过迷惘期早日拿到想要的薪水和工作!   5.面...

详细>>