我的文档目录
webroot
images/
admin/index.php
login.php
我是在admin/index.php里面,包含模板文件,但是,最后网页代码里,这些"../"不起作用,<img src="../images/aa.jpg">变成<img src="images/aa.jpg">,但是 ,我写成<img src="....//images/aa.jpg">,最后结果却是对的,<img src="../images/aa.jpg">
想问一下,Smarty模板对于文件里的相对路径,是怎么处理的?
8 个解决方案
#1
相对路径相对的是php文件所在的目录,不是模板所在目录
#2
"../{$images}/aa.jpg">
$tpl->assign('images','实际路径...') ;
我是用这个带变量的路径解决的。
$tpl->assign('images','实际路径...') ;
我是用这个带变量的路径解决的。
#3
谢谢,带变量的方式,我明白了,
但是,为什么smarty模板,对于模板文件里的 "../" 这种相对路径会忽略掉呢?
但是,为什么smarty模板,对于模板文件里的 "../" 这种相对路径会忽略掉呢?
#4
并没有忽略,
tpl模板的路径和用来输出模板的php路径是不一样的,
当前路径是以正在执行的php文件为准。
tpl模板的路径和用来输出模板的php路径是不一样的,
当前路径是以正在执行的php文件为准。
#5
是啊,我当前路径为 webroot/admin/index.php 要引用的图片路径是webroot/images/ 我在模板文件中,用,<img src="../images/aa.jpg">,不管我在路径前加几个 "../",最后出来的图平路径,都是从 webroot/admin/images/aa.jpg,而到不了webroot/images/aa.jpg,看输出的html文件里,代码变成,<img src="images/aa.jpg">,也就是我用的"../"不起作用
#6
看一下template_c中编译后的文件就知道了
#7
注意你的webroot的目录,
前几天我也遇到类似问题,
后来发现是图片文件都放到webroot的上一级目录了,就没法调用了,
前几天我也遇到类似问题,
后来发现是图片文件都放到webroot的上一级目录了,就没法调用了,
#8
呵呵,谢谢大家,很久没来,我知道怎么回事了,因为原来的程序不是我写的,所以不太明白,后来发现了下面的代码:
$tpl->register_outputfilter("ChangePath");
有下面的函数定义
function ChangePath($buffer,&$tpl)
{
return (preg_replace("/\.\.\//", "", $buffer));
}
原来编译后的程序把 ../ 过滤了,怪不得我用“....//” 可以起作用。
$tpl->register_outputfilter("ChangePath");
有下面的函数定义
function ChangePath($buffer,&$tpl)
{
return (preg_replace("/\.\.\//", "", $buffer));
}
原来编译后的程序把 ../ 过滤了,怪不得我用“....//” 可以起作用。
#1
相对路径相对的是php文件所在的目录,不是模板所在目录
#2
"../{$images}/aa.jpg">
$tpl->assign('images','实际路径...') ;
我是用这个带变量的路径解决的。
$tpl->assign('images','实际路径...') ;
我是用这个带变量的路径解决的。
#3
谢谢,带变量的方式,我明白了,
但是,为什么smarty模板,对于模板文件里的 "../" 这种相对路径会忽略掉呢?
但是,为什么smarty模板,对于模板文件里的 "../" 这种相对路径会忽略掉呢?
#4
并没有忽略,
tpl模板的路径和用来输出模板的php路径是不一样的,
当前路径是以正在执行的php文件为准。
tpl模板的路径和用来输出模板的php路径是不一样的,
当前路径是以正在执行的php文件为准。
#5
是啊,我当前路径为 webroot/admin/index.php 要引用的图片路径是webroot/images/ 我在模板文件中,用,<img src="../images/aa.jpg">,不管我在路径前加几个 "../",最后出来的图平路径,都是从 webroot/admin/images/aa.jpg,而到不了webroot/images/aa.jpg,看输出的html文件里,代码变成,<img src="images/aa.jpg">,也就是我用的"../"不起作用
#6
看一下template_c中编译后的文件就知道了
#7
注意你的webroot的目录,
前几天我也遇到类似问题,
后来发现是图片文件都放到webroot的上一级目录了,就没法调用了,
前几天我也遇到类似问题,
后来发现是图片文件都放到webroot的上一级目录了,就没法调用了,
#8
呵呵,谢谢大家,很久没来,我知道怎么回事了,因为原来的程序不是我写的,所以不太明白,后来发现了下面的代码:
$tpl->register_outputfilter("ChangePath");
有下面的函数定义
function ChangePath($buffer,&$tpl)
{
return (preg_replace("/\.\.\//", "", $buffer));
}
原来编译后的程序把 ../ 过滤了,怪不得我用“....//” 可以起作用。
$tpl->register_outputfilter("ChangePath");
有下面的函数定义
function ChangePath($buffer,&$tpl)
{
return (preg_replace("/\.\.\//", "", $buffer));
}
原来编译后的程序把 ../ 过滤了,怪不得我用“....//” 可以起作用。