Thinkphp 零散知识点

一、关于JS和CSS路径问题

1.找路径是从入口文件index.php来找的,而不是从文件本身所在位置来找,

 因为我们访问时是访问的入口文件

2.在存放JS和CSS的时候可以放到public文件夹下

3.可以使用标签引入:

3.1 import标签

传统方式的导入外部JS和CSS文件的方法是直接在模板文件使用:

系统提供了专门的标签来简化上面的导入:

3.2 load标签

load标签,通过文件方式导入当前项目的公共JS或者CSS

3.3js和css标签

系统还提供了两个标签别名js和css 用法和load一致,例如:

二、第三方类入

有两块地方可以放第三方类
(1)模块下面
(2)Library下面新建文件夹或者旧的文件夹里面
放进去之后,需要添加命名空间,命名空间从根命名空间写起
注意类文件的命名规则和类名的规则

以分页为例:

原来在分页时使用limit标签:

现在也可以引入分页类:

Library下面新建文件夹或者旧的文件夹里面

做法1:在ThinkPHP\Library\Think文件夹下新建fenye文件夹并将之前的page.class.php复制到fenye里

page.class.php的命名空间:namespace Think\fenye;(其余不发生变化)

控制器里面写入:use Think\fenye\Page;

ZhuCeController.class.php

 1 namespace Home\Controller;
 2 use Think\Controller;
 3 use Think\fenye\Page;
 4 class ZhuCeController extends Controller
 5 {
 6
 7         //第三方类引入
 8     function FenYe()
 9     {
10
11         $model=M("nation");
12         $total=$model->count();
13         $page=new Page($total,1);
14
15         $sql="select * from nation ".$page->limit;
16         $attr=$model->query($sql);
17
18         $xinxi=$page->fpage();
19         //var_dump($attr);
20         $this->assign("xinxi",$xinxi);
21         $this->assign("nation",$attr);
22
23         $this->display();
24     }
25 }

View/ZhuCe/FenYe.html:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>无标题文档</title>
 6 </head>
 7
 8 <body>
 9 <table border="1" width="40%">
10 <tr>
11 <td>代号</td>
12 <td>名称</td>
13 </tr>
14 <foreach name="nation" item="v">
15 <tr>
16 <td><{$v.code}></td>
17 <td><{$v.name}></td>
18 </tr>
19 </foreach>
20 </table>
21 <div><{$xinxi}></div>
22 </body>
23 </html>

运行结果:

做法2.在Home模块下的做法

在Home下新建文件夹fenye然后引入Page.class.php,其余不发生改变,效果是一样的

分页类里面的命名空间发生改变:namespace Home\fenye

控制器里面的的命名空间改变:use Home\fenye\Page

运行结果不变:

做法3.不使用use Home\fenye\Page;

做法4:改变分页的部分条件,加入使用limit标签

1.修改Home里面的分页类

2.修改控制器中的写法

3.Ajax返回

(1)url要变为MVC模式,指向的不是具体页面,是操作方法

(2)在操作方法里面返回值的时候,使用ajaxReturn()方法返回,注意返回类型,返回类型要和第二个参数一致

ThinkPHP可以很好的支持AJAX请求,系统的\Think\Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、JSONP、XML和EVAL四种方式给客户端接受数据,并且支持配置其他方式的数据格式返回。

返回数据data可以支持字符串、数字和数组、对象,返回客户端的时候根据不同的返回格式进行编码后传输。如果是JSON/JSONP格式,会自动编码成JSON字符串,如果是XML方式,会自动编码成XML字符串,如果是EVAL方式的话,只会输出字符串data数据。

1)利用Ajax返回的动态验证

 1 //ajax验证用户名非空
 2     function Yhm()
 3     {
 4         $model=D("Text");
 5         $rules=array(
 6             array(‘uid‘,‘require‘,‘用户名不能为空‘),
 7         );
 8         if(!$model->validate($rules)->create())
 9         {
10             $fh=$model->getError();
11             $this->ajaxReturn($fh,"eval");
12         }
13         else
14         {
15             $fh="OK";
16             $this->ajaxReturn($fh,"eval");
17
18         }
19
20     }
21     

2)Zhuce.html

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5 <title>表单验证</title>
 6 <script src="../../../../../jquery-1.11.2.min.js">
 7 </script>
 8 </head>
 9
10 <body>
11 <form action="__ACTION__" method="post">
12 <div>用户名:<input type="text" id="uid" name="uid" /><span id="ts"></span></div><br />
13 <div>密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="text" name="pwd" /></div>
14 <div>确认密码:<input type="text" name="pwd1" /></div><br />
15 <div>年龄:<input type="text" name="age" /></div><br />
16 <div>邮箱:<input type="text" name="email" /></div><br />
17 <div>姓名:<input type="text" name="name" /></div><br />
18 <!--显示错误信息 -->
19 <div style=" width:200px; height:30px; border:#F00 solid 2px; line-height:30px; vertical-align:middle; text-align:center;"><{$error}></div><br />
20 <div><input type="submit" value="注册" /></div>
21 </form>
22 </body>
23 <script type="text/javascript">
24 $(document).ready(function(e) {
25     $("#uid").blur(function(){
26         var uid=$(this).val();
27         $.ajax({
28             url:"__CONTROLLER__/Yhm",
29             data:{uid:uid},//这里要传的参数名必须和表单里的name一致
30             type:"POST",
31             dataType:"TEXT",
32             success: function(data){
33                 $("#ts").html(data);
34                 }
35
36             });
37
38         })
39 });
40
41 </script>
42 </html>

显示效果:

            

4.Session和Cookie

SESSION支持:

系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成,该函数可以完成Session的设置、获取、删除和管理操作。

5.防止用户绕过登录直接访问操作方法
做一个控制器的父类,在该父类里面写一个构造方法,构造方法里面判断session里面有没有值,如果没值。。。如果有值。。。

时间: 2024-11-03 02:48:48

Thinkphp 零散知识点的相关文章

零散知识点

1.引用传递参数ref static void Main(string[] args) { int n1 = 10, n2 = 20; Swap(ref n1,ref n2); Console.WriteLine("n1={0},n2={1}",n1,n2); Console.ReadKey(); } private static void Swap(ref int n1, ref int n2) { int temp = n1; n1 = n2; n2 = temp; } 2.字符串

Python学习 过程中零散知识点的总结

自学资料比较零碎,本文是对在Python学习过程中积累的零零散散的知识点的总结 ====================================================================== 1.  关于编码的简单介绍 unicode  --   万国码 utf-8     --  数字.字符用8位,欧洲字符16位来存,中文3个字节24位 unicode  -->  utf-8   编码 encode utf-8    -->  unicode  解码 decod

ThinkPHP基本知识点

下载获取:www.thinkphp.cn 配置 1.创建网站根目录  2.放置thinkPHP框架目录    3.浏览器下访问单入口文件 目录简介 Application ├─Common 应用公共模块 │ ├─Common 应用公共函数目录 │ └─Conf 应用公共配置文件目录 ├─Home 默认生成的Home模块 │ ├─Conf 模块配置文件目录 │ ├─Common 模块函数公共目录 │ ├─Controller 模块控制器目录 │ ├─Model 模块模型目录 │ └─View 模块

C++ 零散知识点速记 -- &lt;深入探索C++对象模型&gt; 读书笔记

错误认知 没有任何构造函数的时候, 编译器总会生成默认构造函数 编译器仅在必要的时候生成默认构造函数 析构函数同理 条件 : 有带有默认构造函数的member 有带有默认构造函数的base class 有virtual function 有virtual inherit 任何对象都带有vptr / 可以对任何对象指针进行 dynamic_cast 操作 只有对象具有 多态 属性的时候 , 才具有 vptr , 才可以对其指针进行 dynamic_cast . 对一个没有多态 属性的指针进行dyn

Thinkphp简易知识点(二)

1.简述MVC的原理以及单入口模式的好处? 单入口模式的好处:安全,灵活.可集中进行安全处理,访问统计等统一控制. 2.入口文件中为什么要判断PHP版本,TP要求PHP的版本是什么? 因为ThinkPHP3.2引入了命名空间的概念,PHP5.3以上(包含PHP5.3)的版本才支持 PHP版本不能小于5.3.0 3.控制器的定义规则是什么(含控制器名.控制器类名和控制器类文件名),并举出一个例子? 控制器名: 首字母大写.例:Index 控制器类名:控制器名+Controller.例:IndexC

Linux系统的一些零散知识点

-Linux系统是不以文件后缀名区分文件类型的 #详解(待完成) -Linux系统区分大小写 //快速切换大小写的方法是同时按住Shift和字母按键 -如果要安装Windows和LInux的双系统,最好先安装Windows,然后再安装Linux.因为如果先安装Linux,随后安装Windows时,会覆盖MBR.导致Linux无法引导.

jdbc零散知识点

1.可滚动结果集: 1 conn = JdbcUtils.getConnection(); 2 st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 3 ResultSet.CONCUR_READ_ONLY); 4 rs = st 5 .executeQuery("select id, name, money, birthday from user"); 6 while (rs.next()) { 7 System.out

html——零散知识点

1.form表单中的button form表单中,正常应该提交数据的是type="submit" 2. html5的文件读取方法FileReader() 3.input标签和img标签可以直接设置长宽

Android 零散知识点整理

为什么Android的更新试图操作必须在主线程中进行? 这是因为Android系统中的视图组件并不是线程安全的.通常应该让主线程负责创建.显示和更新UI,启动子线程,停止子线程.让子线程完成计算并向主线程发出更新UI的消息,让主线程来更新UI.这就促使Android中产生了Handler机制. 如何更改Android Studio编译所采用的API版本? 通过module setting 的Flavors选项卡进行Android API编译版本的更改: 小米手机更改应用程序图标后,桌面上图标没有