# Html 模版源码
~~~
<div class="text-center">
<button class="btn bg-success" type="button" id="sc"
user_id="{$article->user->id}" article_id="{$article.id}" session_id="{$Think.session.uid}"
>
{if $Think.session.code == 1}
<span style="color: white!important;">取消收藏 </span></button>
{else/}
<span style="color: white!important;">收藏 </span></button>
{/if}
<button class="btn bg-danger" type="button" id="dz" user_id="{$article->user->id}" article_id="{$article.id}" session_id="{$Think.session.uid}">
{if $Think.session.zan == 1}
<span style="color: white!important;">取消点赞</span>
{else/}
<span style="color: white!important;">点赞 </span></button>
{/if}
</button>
</div>
~~~
# js代码
~~~
<script>
$(function () {
//收藏功能
$('#sc').click(function () {
//获取文章id
let user_id = $(this).attr('user_id')
//获取文章id
let article_id = $(this).attr('article_id')
//获取session id
let session_id = $(this).attr('session_id')
if (user_id && article_id){
$.ajax({
type: 'get',
url: "{:url('/collection')}",
data:{
'user_id':user_id,
'article_id':article_id,
'session_id':session_id,
},
dataType: 'json',
success: function(data){
switch (data.status) {
case 1:
swal({
text: data.message,
icon: "success",
button: false
});
$('#sc').attr('class','btn bg-danger')
$('#sc').html(' <span style="color: white!important;">收藏成功 </span>')
break
case 0 :
swal({
text: data.message,
icon: "warning",
button: false,
});
break
case -1:
swal({
text: data.message,
icon: "warning",
button: false,
});
$('#sc').attr('class','btn bg-success')
$('#sc').html('<span style="color: white!important;">收藏</span>')
break
}
}
})
}
})
//点赞功能
$('#dz').click(function () {
//获取文章id
let user_id = $(this).attr('user_id')
//获取文章id
let article_id = $(this).attr('article_id')
//获取session id
let session_id = $(this).attr('session_id')
if (user_id && article_id){
$.ajax({
type: 'get',
url: "{:url('/zan')}",
data:{
'user_id':user_id,
'article_id':article_id,
'session_id':session_id,
},
dataType: 'json',
success: function(data){
switch (data.status) {
case 1:
swal({
text: data.message,
icon: "success",
button: false
});
$('#dz').attr('class','btn bg-danger')
$('#dz').html(' <span style="color: white!important;">点赞成功 </span>')
break
case 0 :
swal({
text: data.message,
icon: "warning",
button: false,
});
break
case -1:
swal({
text: data.message,
icon: "warning",
button: false,
});
$('#dz').attr('class','btn bg-success')
$('#dz').html('<span style="color: white!important;">点赞</span>')
break
}
}
})
}
})
})
</script>
~~~
# php 代码
~~~
//加入收藏
public function collection(Request $request){
$data = $request->param();
//判断是否登录进行收藏
if ($data['session_id'] == null){
return ['status'=> 0,'message'=>'您还没有登录,不能进行文章收藏'];
}
//定义规则,进行数据库查询
$map[] = ['user_id','=', $data['user_id']];
$map[] = ['article_id','=', $data['article_id']];
$rule = Db::table('collection')->where($map)->find();
if (is_null($rule)){
$rule = Db::table('collection')->insert(
[
'user_id' => $data['user_id'],
'article_id' => $data['article_id'],
]
);
session('code',1);
return ['status'=>1,'message'=>'收藏成功'];
}else{
session('code',0);
Db::table('collection')->where($map)->delete();
return ['status'=>-1, 'message'=>'取消收藏'];
}
}
//点赞
public function zan(Request $request){
$data = $request->param();
//判断是否登录进行收藏
if ($data['session_id'] == null){
return ['status'=> 0,'message'=>'您还没有登录,不能对文章点赞'];
}
//定义规则,进行数据库查询
$map[] = ['user_id','=', $data['user_id']];
$map[] = ['article_id','=', $data['article_id']];
$rule = Db::table('zan')->where($map)->find();
if (is_null($rule)){
Db::table('zan')->insert(
[
'user_id' => $data['user_id'],
'article_id' => $data['article_id'],
]
);
session('zan',1);
return ['status'=>1,'message'=>'点赞成功'];
}else{
session('zan',0);
Db::table('zan')->where($map)->delete();
return ['status'=>-1, 'message'=>'取消点赞'];
}
}
~~~
# 路由设置
~~~
//加入收藏
Route::get('collection','index/collection');
//点赞
Route::get('zan','index/zan');
~~~
- Tp 框架5.1安装
- Tp 资源控制器创建跟非资源控制器
- Tp 自定义目录
- Tp 链接传参,地址栏获取参数
- Tp ajax 异步提交数据
- Tp 模型里面指定开启时间戳
- Tp加载验证码
- Tp 模版
- Tp 模版继承
- Tp模版页面If 条件 及session存储 取出
- Tp 默认在模版页面指定内容
- Tp 模版页面获取session
- Tp验证器
- Tp 自定义验证
- Thinkphp 模型验证规则使用
- Tp 文件上传
- Tp 实现注册自动登录
- Tp 编辑器
- Tp 结合 Markdown里面的editor编辑器
- Tp Marckdown 编辑模版输出
- Tp 搜索功能
- Tp 点赞 收藏
- Tp 基本权限
- Tp 创建验证器
- Sweetalert 弹出框 引用
- Tp 网站 开启 关闭功能
- Tp 网站 开启 注册功能
- Tq QQ登录
- Tp 邮箱注册 验证
- Tp 无限极分类
- Tp 路由
- Tp RBAC权限 适合于任何框架
- 创建权限模型,控制器,验证规则
- 创建角色 控制器 模型 验证规则
- 用户角色设置
- 权限验证
- Tp auth 权限
- 第一部 auth 安装
- 第二部 创建 三张数据库
- 第三部 创建用户控制器
- 第四部 创建规则表
- 规则表基本操作
- 1 规则页面加载
- 2 添加规则
- 3 编辑规则
- 4 删除规则
- 第五部 创建用户组
- 用户组基本操作
- 第一步 展示用户组首页
- 第二步 添加用户组
- 第三步 编辑用户组
- 第四部 删除用户组
- 第六步设置权限
- 第一步 创建 模型 控制器
- 第二步 首页显示
- 第三部 设置用户权限
- 第七步 执行权限认证
- 备注 附加规则原理
- Tp 数据库
- 外键约束
- Tp 结合layui 上传
- Layui 编辑器 前端展示
- Tp 模版eq
- Tp 删除
- Tp session 处理
- Tp cache缓存方法
- Tp 后台验证管理员登录
- 前台Nav 导航
- 左边导航
- Tp 批量删除
- O2O
- Tp框架插入数据自带时间戳
- Tp 结合layui 分页
- Tp 整合百度地图
- Tp 结合城市三级联动
- 密码验证
- 团购时间
- Tp模板时间修改
- 安卓App 平台入驻上线
- Api 接口返回
- Thinkphp 生成5.1二维码
- 回调Api
- layui 关闭框 刷新
- Layui 监听
- 判断是否是pc端 手机端
- Lauyi 自动转换时间
- Tp 增加时间
- ajax 同步 异步处理
- 弹出框
- 传输数据编辑
- 上传 引用 uploadify
- js 收缩
- Tp 增加数据表
- Tp-前置钩子
- 删除代码
- 适合tp5.0描述文字过长
- php 三级城市城市表带数据
- layu结合 tp table数据数组循环
- layui 解决数据为NUll 错误代码