今天因为在写项目时忽然发现自己所写的框架有些不足之处,而这点原因是比较致命的地方。其实问题很简单 因为框架的URL方式是PATHINFO模式这样的模式下在对某个模块或者模块下的方法访问时会产生如下路径Http://www.ipensoft.com/index.php/Home/Index 这样问题就来了 当你的模板文件中有连接的外部css、js 、图片等资源时 就会使原本正常的路径变成错误的连接路径。
例如:
1
2
|
<
link
charset
=
"UTF-8"
href
=
"Public/css/bootstrap.css"
type
=
"text/css"
rel
=
"stylesheet"
/>
//这段代码大家非常熟悉其意思但是在如上边所说的URL地址的情况下就会产生错误的连接
|
所以就有必要找一个解决的办法,既然是模板连接资源的问题那就从模板相关的内容开始找解决的办法,自己晓得ThinkPHP中有__PUBLIC__这枚标签用来在模板中载入公共资源。 那我也做一个 那样就要利用到了Smarty的插件功能。它的插件功能也很强大 可以自定义函数 和标签 。。。
我这里主要使用了自定义标签的功能 采用function.html_image.php命名风格的是标签插件方法名也是有规范的
1
2
3
4
5
6
7
|
<?php
function
smarty_function_html_image(
$params
,
$template
)
//命名风格 并且接受两个参数
{
$file
=
""
;
return
<img src=
$params
[
'file'
] >;
}
?>
|
他其中接收两个参数均为数组值 $params 为 你在模板中传入的参数 如:{html_image file="logo.png"} 他将会吧 file=“logo.png”接收并已数组的方式存储。第二个参数也是数组 但是我并未明白他的具体含义是什么 用来做什么。
既然已经接收到了模板中的数据了那么 接下来就是对数据操作和返回数据了 你可以将数据接收后进行跟需求相关的操作 最后在返回时候 需要注意 你要返回你想要在html模板中所显示的完整内容 就像例子中写的那样 返回! 对就是那样 你就完成了一个模板标签的制作。