博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Thinkphp 零散知识点(caa/js路径,引入第三方类,ajax返回,session/cookie)
阅读量:7286 次
发布时间:2019-06-30

本文共 4732 字,大约阅读时间需要 15 分钟。

 一、关于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 Code

View/ZhuCe/FenYe.html:

1  2  3  4 
5 无标题文档 6 7 8 9
15
10
11
12
13
14
16
17
18
19 20
代号 名称
<{
$v.code}>
<{
$v.name}>
21
<{
$xinxi}>
22 23
View Code

运行结果:

 

做法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         else14         {15             $fh="OK";16             $this->ajaxReturn($fh,"eval");17                 18         }19         20     }21
View Code

2)Zhuce.html

1  2  3  4 
5 表单验证 6 8 9 10 11
12
用户名:
13
密    码:
14
确认密码:
15
年龄:
16
邮箱:
17
姓名:
18
19
<{
$error}>
20
21
22 23 42
View Code

显示效果:

            

 

4.Session和Cookie

SESSION支持:

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

 

 

 

COOKIE支持:

 

 

登录:

 登录方法1:存session值,判断是否有这个值在登录

LoginController.class.php

display(); } else { $model = D("users"); $uid = $_POST["uid"]; $pwd = $_POST["pwd"]; $attr = $model->field("Pwd")->find($uid); //echo $attr["pwd"]; if($pwd == $attr["pwd"]) { session("uid",$uid); $this->success("登录成功","Main"); } else { $this->error("登录失败"); } } } public function Main() { //var_dump(session('?uid')); //有session时返回true //判断session if(!session('?uid')) { $this->error("未登录","Login"); exit(); } echo "主页面"; }}
View Code

Login.html

无标题文档

登录

用户名:
密码:
View Code

 

登录方法2:写一个父类来控制登录,未登录者直接跳到登录页面

父类:CheckController.class.php

error("未登录",U("Login/Login")); exit(); } } }
View Code

LoginController.class.php:登录只管登录,不继承新的父类,登陆后的其他内容继承CheckController.class.php

写法不变,原来的function Main() 注释掉

比如说:

更改MainController.class.php里面的命名空间:

namespace Home\Controller;
use Home\Controller\CheckController;
class MainController extends CheckController

这是不论访问MainController下的哪个路径都只能到登录

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.防止用户绕过登录直接访问操作方法

做一个控制器的父类,在该父类里面写一个构造方法,构造方法里面判断session里面有没有值,如果没值。。。如果有值。。。

 

转载于:https://www.cnblogs.com/ds-3579/p/5602450.html

你可能感兴趣的文章
从零到有的突破:BCH爱好者聚集地BCH.Club公测上线
查看>>
自建容器映像登录也行?Quay整合多种进阶功能
查看>>
如何快速打造一款高清又极速的短视频APP?
查看>>
总结sqlserver2012删除语法:delete数据表中的某一项内容
查看>>
网站建设就要像2018世界杯的俄罗斯队大杀四方[图]
查看>>
118.kubectl命令用法
查看>>
药品监管系统架构揭秘:海量溯源数据存储与查询
查看>>
父传子,关于清楚子组件提交之后页面的数据
查看>>
Java 命令行交互输入库 JLine 入门
查看>>
举个栗子看如何做MySQL 内核深度优化
查看>>
asp.net 虹软 人脸识别 实现刷脸住宿、刷脸签到、刷脸进入等
查看>>
tomcat服务器输入localhost可以访问,ip无法访问解决办法
查看>>
js 实现异步上传图片+预览
查看>>
Java 趣史-差点把 Java 命名成了 Silk(丝绸)
查看>>
死磕 java集合之ConcurrentLinkedQueue源码分析
查看>>
ubuntu安装sun jdk6
查看>>
phalapi-入门篇4(国际化高可用和自动生成文档)
查看>>
xcode报错集锦_1
查看>>
hadoop-mapreduce分析
查看>>
多线程学习(4)wait/notify
查看>>