1.在模块中定义常量:
在模块中定义变量需要在当前模块中的Conf文件夹下穿件config,php 下
定义常量:

<?php
define("__ADMIN__", "/App/Admin");
return array(
);
在html中使用smarty 模板的方式将常量输出
<{$Think.const.__HOME__}> // 正确
<{__HOME__}>//错误,这是系统常量的写法,自定义常量需要加$Think.const.
2.在html 页面外接css文件和js文件:两种方法
2-1f方法一:放在入口目录Public目录下

在html页面用绝对路径的方式配置url路径
<script src="/Public/bootstrap/js/bootstrap.js"></script>
2-2方法2:在当前模块的View目录下

在html页面用绝对路径的方式配置url路径
使用相对路径
background:url(../images/prev.png)
3.在html 页面smarty 模板中使用 php函数
最外层的函数需要有':' 嵌套函数就不需要‘:’
href="<{:U('Admin/Advert/addAdvert')}>"// U函数是PHP系统函数 需要:
<{:md5(mb_substr($lpf,1,2,'utf-8'))}>// md5函数是PHP系统函数 需要:,mb_substr是 嵌套在MD5函数里的系统函数就不需要‘:’
4 函数 U()传参

但是一般会使用超链接,这样就会牵扯到传递参数问题,
:http://www.oschina.net/code/snippet_259709_12813
<{:U(‘Home/Index/index',array('id'=>$data['id']))}>
一般在模板中使用变量,有两种方法,$data.id,$data['id']前者比较方便,但是在U中不适用,所以用$data['id']。这样就不会有问题了
5 路由配置的问题
路由的配置分为模块路由和全局路由。
1:全局路由就是在全局的config文件下配置路由,这个时候配置路由就需要加上模块的名称
'blog/:id'=>'Home/blog/read' // 表示路由到Home模块的blog控制器的read操作方法
2:局部路由就是在当前模块下的config文件下配置的路由, 这个时候路由就不需要模块的名称
6重定向 Controller类的redirect方法可以实现页面的重定向
$this->redirect(U('index/index'));
是会在url地址后面自动添加两个.html.html的问题
因为
ThinkPHP源码,文件路径ThinkPHP\Library\Think\Controller.class.php,搜索"redirect"
protected function redirect($url,$params=array(),$delay=0,$msg='') {
$url = U($url,$params);
redirect($url,$delay,$msg);//$url是由U()方法生成的所有会默认添加一个伪静态后缀:(不设置默认为.html)
}
总结:所以在使用重定向的方法的时候通过U() 方法生成url会出现两个.html所以要么修改源码给第三个参数:设置伪静态后缀设置为空。
$url = U($url,$params,"");
然在在控制器内使用:
$this->redirect(U('index/index'));
要么url地址采用字符串形式:
$this->redirect('index/index');
网友博客:http://bbs.sxqswl.net/forum.php?mod=viewthread&tid=226
关于U()方法介绍
博客:http://blog.sina.com.cn/s/blog_4b32835b010145ad.html
U 方法根据 URL 模式的不同而自适应的生成不同的 URL 格式,如上面例子在各模式下生成的 URL 对比如下:
普通兼容模式:index.php?m=Index&a=list&cat_id=1&status=1
PATHINFO 模式:index.php/Index/list/cat_id/1/status/1
REWRITE 模式:Index/list/cat_id/1/status/1
REWRITE 模式,伪静态后缀为 .html:Index/list/cat_id/1/status/1.html
REWRITE 模式,使用 - 分隔符与 .html 后缀:Index-list-cat_id-1-status-1.html
网友评论