spUrl函数子目录使用

#1 homexigua

我建立了admin目录,里边的index.php设置为
 'url' => array( // URL设置
'url_path_info' => TRUE, // 是否使用path_info方式的URL
'url_path_base' => 'admin/index.php', // URL的根目录访问地址
),

模板中用spUrl('main','login')得到的地址是/index.php/main/login而不是在子目录中的/admin/index.php/main/login

求解?

2010-05-23 19:56:03

#2 homexigua

刚才又试了一下,:2.5.25版本的不存在此问题。新版本的确实就是如此

2010-05-23 20:30:17

#3 homexigua

新版本'url_path_base'这个不管如何配置都可以正常使用,好像这个参数没用了似的

2010-05-23 20:31:01

#4 jake

在sp2.3左右的时候,框架可以自动识别二级目录,所以后面版本的框架,都无需设置'url_path_base'

但是'url_path_base'是优先设置,方便一些更为复杂的用法。

2010-05-23 21:51:26

#5 homexigua

问题现在二级目录的时候,spurl函数无法取得正常的路径
本来取admin/index.php/main/index
结果取成了index.php/main/index

2010-05-23 21:55:39

#6 homexigua

解决,好像speedphp.php文件写反了
// 当在二级目录中使用SpeedPHP框架时,自动获取当前访问的文件名
if('' == $GLOBALS['G_SP']['url']["url_path_base"]){
        $GLOBALS['G_SP']['url']["url_path_base"] = '/index.php';
}else{
        if(basename($_SERVER['SCRIPT_NAME']) === basename($_SERVER['SCRIPT_FILENAME']))
                $GLOBALS['G_SP']['url']["url_path_base"] = $_SERVER['SCRIPT_NAME'];
        elseif (basename($_SERVER['PHP_SELF']) === basename($_SERVER['SCRIPT_FILENAME']))
                $GLOBALS['G_SP']['url']["url_path_base"] = $_SERVER['PHP_SELF'];
        elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === basename($_SERVER['SCRIPT_FILENAME']))
                $GLOBALS['G_SP']['url']["url_path_base"] = $_SERVER['ORIG_SCRIPT_NAME'];
}

2010-05-23 22:29:48

#7 jake

你上面用的是什么版本的?2.5和3的这一段是:

// 当在二级目录中使用SpeedPHP框架时,自动获取当前访问的文件名
if('' == $GLOBALS['G_SP']['url']["url_path_base"]){
        if(basename($_SERVER['SCRIPT_NAME']) === basename($_SERVER['SCRIPT_FILENAME']))
                $GLOBALS['G_SP']['url']["url_path_base"] = $_SERVER['SCRIPT_NAME'];
        elseif (basename($_SERVER['PHP_SELF']) === basename($_SERVER['SCRIPT_FILENAME']))
                $GLOBALS['G_SP']['url']["url_path_base"] = $_SERVER['PHP_SELF'];
        elseif (isset($_SERVER['ORIG_SCRIPT_NAME']) && basename($_SERVER['ORIG_SCRIPT_NAME']) === basename($_SERVER['SCRIPT_FILENAME']))
                $GLOBALS['G_SP']['url']["url_path_base"] = $_SERVER['ORIG_SCRIPT_NAME'];
}else{
        $GLOBALS['G_SP']['url']["url_path_base"] = '/index.php';
}

2010-05-24 09:02:46

#8 homexigua

回复 7 jake


用的是3的版本,上边是我换过来后的代码,感觉换过来就可以正常获取了·!
好像url_path_base为空的时候可以正确判断,但是url_path_base不为空的时候反而强制变成了/index.php。

2010-05-24 09:16:41