美文网首页
开发过程中容易犯的错误

开发过程中容易犯的错误

作者: 起个名字太费劲 | 来源:发表于2017-09-16 23:47 被阅读0次

1.在模块中定义常量:

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

定义常量:


S7O2YUJC))P7V}RC0SI)%0Y.png
<?php
define("__ADMIN__", "/App/Admin");

return array(

);

在html中使用smarty 模板的方式将常量输出

<{$Think.const.__HOME__}>   // 正确

<{__HOME__}>//错误,这是系统常量的写法,自定义常量需要加$Think.const. 

2.在html 页面外接css文件和js文件:两种方法

2-1f方法一:放在入口目录Public目录下

7F_7VN7`W0J0G0LDMVU7Y8U.png

在html页面用绝对路径的方式配置url路径

<script src="/Public/bootstrap/js/bootstrap.js"></script>

2-2方法2:在当前模块的View目录下

S~JDAMD8%2_JJSYXB8(X$UV.png

在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()传参

1.png

但是一般会使用超链接,这样就会牵扯到传递参数问题,
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

相关文章

网友评论

      本文标题:开发过程中容易犯的错误

      本文链接:https://www.haomeiwen.com/subject/qhtpsxtx.html