1.如果某个方法设置了路由器,那么访问这个方法的时候,就只能通过路由的形式访问了,不能再模块/控制器/方法这样的形式访问了2.第三种,资源路由::资源第一个参数的英文定义路由的规则第二个参数的英文这个路由规则去找的控制器名称,别忘前面了模块名资源路由会根据资源路由的定义方式,生成每个方法对应的请求方式及路由地址,设置后会自动注册7个路由规则,如下:请求类型生成路由规则对应操作方法获取博客 - >索引GET博客/创建 - >创建POST博客保存GET博客/:id读取GET博客/ :id /编辑编辑PUT博客/:id更新删除博客/:id删除3.调用模板在方法中返回视图(),会调用索引模板下,查看文件夹下的索引目录下的相应的与操作名相同的的.html文件0.4。
$ table-> addColumn(‘username’,‘string’,[‘default’=>‘houdunren’,‘comment’=>‘用户名’]);
表
−
>
a
d
d
C
o
l
u
m
n
(
′
密
码
′
,
′
字
符
串
′
,
[
′
评
论
′
=
>
′
密
码
′
]
)
;
添
加
之
后
,
表 - > addColumn('密码','字符串',['评论'=>'密码']); 添加之后,
表−>addColumn(′密码′,′字符串′,[′评论′=>′密码′]);添加之后, table-> create();表示创建表。最后命令行里面php think migrate:run便可在数据库里面创建表了。当要改变的时候,就调用migrate的回滚方法,撤销上次的操作,php认为迁移:回滚,这时候再修改迁移文件,再php认为迁移:运行便可完成修改5.创建填充文件(就是往数据库里填入的数据文件)php think seed:创建用户(创建一个往用户表里填充的数据文件),这个文件和迁移文件是在同一文件加下(数据库)“ //使用db()方法,定义往那个表里填充数据,//使用insert()方法,设置插入的数据db(“user”) - > insert([‘username’=>“后盾人”,’密码’=> MD5(“admin888”),’缺口’=>’人人“]); db(“user”) - > insert([‘username’=>
6加载公共模板文件,比方说页面头部尾部信息,{extend name =’。/ common / father’/},注意路径,这个路径是基于模板文件的父级文件夹的位置,也就是索引文件夹的位置来判断的,因为模板文件再索引平级的公共下的father.html所以路径值是-当前目录下的普通文件夹下的father.html,注意这边用延伸来继承的时候,不用谢后缀0.7。“来告诉子类我这里有个区块可以用来填充,并且指明区块名。在子模块中,可根据父模块的块的名字,来填充区块内容。{ b lock name =“head”}中间写html代码来填充{/ b lock}。注意这里的名字要一样才可以填充,要制定我要填充的区块名.8。类似于assign()函数的功能实现:把数据网模板上传递首先,页面展示模板就是用图()方法(相当于显示()方法),这个方法的第一个参数是要加载模板的名称,一般都是默认加载模块目录下点的文件下的与控制器同名目录下的和操作同名的HTML文件。第二个参数是要往模板页面中分配的数据,但是这里要用紧凑(“{数据变量名}”)函数把数据变量处理一下在传到页面当中去。这里的参数是变量名,不加美元符号的0.9。在TP5框架中,在页面上插入的PHP逻辑使用的是{},估计用了智者的,循环也是{foreach 数据为数据为 k => $ v}中间对数据进行操作{/ foreach},但是可能会和js中的{}大括号冲突10.创建模型类(对每个不同表的操作类):在命令行里面用php think make:model {表的名字} 11.在使用模型类的时候,使用一下模型类的命名空间,否则他就不知道该去哪里找这个类,可能是因为这个模型类的放置位置不固定,所以要手动加载命名空间.use app \ common \ model \ User;
halt()函数里面直接传入某个变量,halt($ user),不用写引号。和快学框架的halt方法一样的,也包含了
die.13 。对数据库的数据操作增了改查: 1.使用模型类操作,
用
户
=
用
户
:
:
选
择
(
)
;
0.2
。
使
用
D
b
的
类
的
操
作
,
要
先
指
定
操
作
的
数
据
表
,
’
U
S
E
R
=
D
B
:
:
表
(
′
数
据
表
名
′
)
−
>
选
择
(
)
;
‘
3
。
使
用
助
手
函
数
,
‘
U
S
E
R
=
D
B
:
:
表
(
′
数
据
表
名
′
)
−
>
选
择
(
)
;
‘
3
。
使
用
助
手
函
数
,
‘
u
s
e
r
=
d
b
(
“
数
据
表
名
”
)
−
>
s
e
l
e
c
t
(
)
;
‘
t
p
框
架
会
自
动
的
把
时
间
以
i
n
t
时
间
戳
的
形
式
添
加
到
数
据
库
里
面
去
,
字
段
名
c
r
e
a
t
e
t
i
m
e
,
u
p
d
a
t
e
t
i
m
e
.
15
。
安
装
p
h
p
m
a
i
l
e
r
扩
展
,
就
是
邮
件
扩
展
,
去
p
a
c
k
a
g
i
s
t
.
o
r
g
上
下
载
p
h
p
m
a
i
l
e
r
,
代
码
为
c
o
m
p
o
s
e
r
r
e
q
u
i
r
e
p
h
p
m
a
i
l
e
r
/
p
h
p
m
a
i
l
e
r
16.
为
邮
件
设
置
编
码
用户=用户::选择();0.2。使用Db的类的操作,要先指定操作的数据表,’USER=DB::表(′数据表名′)−>选择();‘3。使用助手函数,‘USER=DB::表(′数据表名′)−>选择();‘3。使用助手函数,‘ user = db(“{数据表名}”) - > select();` tp框架会自动的把时间以int时间戳的形式添加到数据库里面去,字段名create_time, update_time.15。 安装phpmailer扩展,就是邮件扩展,去packagist.org上下载phpmailer,代码为composer require phpmailer / phpmailer 16.为邮件设置编码
用户=用户::选择();0.2。使用Db的类的操作,要先指定操作的数据表,’USER=DB::表(′数据表名′)−>选择();‘3。使用助手函数,‘USER=DB::表(′数据表名′)−>选择();‘3。使用助手函数,‘user=db(“数据表名”)−>select();‘tp框架会自动的把时间以int时间戳的形式添加到数据库里面去,字段名createtime,updatetime.15。安装phpmailer扩展,就是邮件扩展,去packagist.org上下载phpmailer,代码为composerrequirephpmailer/phpmailer16.为邮件设置编码 mail-> Charset =“utf-8”;
17.在jquery里面的注释,有问题,注释前面一定要有空格或是tab不然就会报错
18。在Jquery中,给按钮加点击事件的时候,“`
$(“#{按钮id}”)。click(function(){ return false; //这里的return false作用是 //要是不加这个,在执行完jquery的事件之后,他还是会执行自己的提交功能,这里的假就是停止下来,不让他执行提交}) `
19 … mt_rand(min,max):生成一个分钟到最大值之间的一个整数20.框架里的url不区分大小写:admin / index / index = admin / Index / index 21.网站域名:{ $ Request.domain}。网站Ip:{$ Request.domain}。端口:{$ Request.domain}22.助网函数URL(),传递参数.href =“{:URL(’管理员/分类/编辑’, [‘ID’=>’cateInfo.id’])}“,这样就把当前栏目列表的栏目ID通过获取方法传给edit()操作了。在那里面只要输入(‘get.id’),就可以把信息取下来了。别忘了在路由里面加上可选参数:: rule('cateedit / [:id]','admin / cate / edit','get | 后');
24.判断是否要用ajax:当需要加载新的页面的时候,直接在标签的href =“”里面加上{:URL()},因为他需要显示新的页面而当按钮的作用只是把数据发送给某个页面进行处理判断,不用显示新的页面(形式表单数据时),这时候用AJAX。会好一点。当在栏目列表删除行数据,用AJAX时,不能删除按钮起ID,因为这是个循环,有很多的按钮,要是起了ID,就表示这些按钮全都是一样的标识,不符合页面的ID唯一性的准备。可以加个班,反正只要让jquery的选择器找到这个元素就行。 26,软删除,就是在数据库里面加上个delete_time,当其为空时,表示这个数据没有被删除。反之,当期不为空时,就是表示这个数据被删掉了。用法:先在模型类里面使用SoftDelete;
,然后当要删除某个栏目时,先cateInfo.id’])}“,这样就把当前栏目列表的栏目ID通过获取方法传给edit()操作了。在那里面只要输入(‘get.id’),就可以把信息取下来了。别忘了在路由里面加上可选参数:: rule('cateedit / [:id]','admin / cate / edit','get | 后');
24.判断是否要用ajax:当需要加载新的页面的时候,直接在标签的href =“”里面加上{:URL()},因为他需要显示新的页面而当按钮的作用只是把数据发送给某个页面进行处理判断,不用显示新的页面(形式表单数据时),这时候用AJAX。会好一点。当在栏目列表删除行数据,用AJAX时,不能删除按钮起ID,因为这是个循环,有很多的按钮,要是起了ID,就表示这些按钮全都是一样的标识,不符合页面的ID唯一性的准备。可以加个班,反正只要让jquery的选择器找到这个元素就行。 26,软删除,就是在数据库里面加上个delete_time,当其为空时,表示这个数据没有被删除。反之,当期不为空时,就是表示这个数据被删掉了。用法:先在模型类里面使用SoftDelete;
,然后当要删除某个栏目时,先 cateInfo = model(’Cate’) - >
$ cateInfo-> delete(),这时候的效果就是数据库里面的delete _ time字段被添加上删除的时间戳,表示这个数据被删掉了,而当在框架里调用选择()时,这个数却不会被查到0.27。页面里的网址助手函数跳转,流程估计是,先根据路由转化为路由名称,再根据路由名称由路由分配到实际的页面上去的。当发现跳转不正常的时候,别忘了检查一下啊路由配置,有没有出错28.PHP7里面三元运算符:输入(’post.is _ top)??空;两个问号表示要是为真就是它本生,要是不为真,那就是两个问号之后的那个值。 29.前台的表单的检查 b牛,当没有选择的时候,输入()里面是找不到提交的数据的,这时候,要对其进行判断.’is _ top’=>输入(’post.is _ top’)?? 0; 表示当没有传值过来的时候,就赋值为0,当传值过来的时候,检查 b ox本身的值为1.还有要注意,要给其加一个value =“1”,的属性,表示当选择时,表单传过去的数据值为1,不然传过去的值一直就是0。30 {如果vo.is_top $ == 1}已推荐{别的/}未推荐{/如果},在页面中包含逻辑代码,{if条件}操作{else if条件/}操作{/ if}
31.desc降序,大的在上小的在下.asc升序(默认),小的在上,大的在下.32。attr(
)方法设置或返回被选元素的属性值。可以在元素上加一个DATAID = “{$ vo.id}”,然后再jquery的里面就可以用’$(这).attr( ‘DATAID’)获得该属性的值,用于AJAX传输数据 33。layer询问框:“
layer.confirm({msg,{ title:“询问框标题”, 图标:3, },函数(索引){//回调函数 layer.close(index); //关闭窗口} )
` 34 … json数据格式:{id:id,title:title} 35.表的关联,再文章表中通过表内字段cate_id查到所属的栏目信息,就是在显示文章的时候列表里面希望在页面显示文章所属栏目的信息
//先在文章模型里面定义栏目关联方法cate,belogs表示多对一,多个文章对应一个栏目,多对一是hasMany()公共功能美食(){ // belogsTo表示这个模型关联到Cate模型,关联的外键是cate_id,所关联的Cate表的主键是id
————————————————
版权声明:本文为CSDN博主「江judge」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41281571/article/details/82456317