TP v5中Url Compat模式

2019-10-05 13:17栏目:健身减肥
TAG:

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都不行:

追加三个布署项UHavalL_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这一个更宏大上的呢?答:框架不是至关重要,关键是人。

版权声明:本文由699net亚洲必赢发布于健身减肥,转载请注明出处:TP v5中Url Compat模式