thinkphp5项目--个人博客(二)
thinkphp5项目--个人博客(二)
项目地址
fry404006308/personalBlog: personalBlog
https://github.com/fry404006308/personalBlog
一、删除管理员

public function del(){
$id=input('id');
//初始化管理员不能删除
// 根据主键删除
if($id!=1){
//删除操作
$deleted=db('admin')->delete(input('id'));
if($deleted){
return $this->success('删除管理员成功!!','lst');
}else{
return $this->error('删除管理员失败!!');
}
}else{
return $this->error('初始化管理员不能删除!!');
}
}
{if condition="$value['id'] neq 1"}
<a href="#" onClick="warning('确实要删除吗', '{:url('admin/del',array('id'=>$value['id']))}')" class="btn btn-danger btn-sm shiny">
<i class="fa fa-trash-o"></i> 删除
</a>
{/if}
二、修改管理员

控制器中
public function edit(){
$id=input('id');
$data=db('admin')->find($id);
//如果是提交过来的数据
if(request()->isPost()){
$arr=[
'id'=>input('id'),
'username'=>input('username'),
//如果接收到密码,并且它不为空,说明我们要修改密码
];
if(input('password')){
$arr['password']=md5(input('password'));
}else{
//如果为空则表示原来的密码不变
$arr['password']=$data['password'];
}
//验证
$validate = Loader::validate('Admin');
if(!$validate->scene('edit')->check($arr)){
$this->error($validate->getError()); die;
}
// 更新数据表中的数据
$edited=db('admin')->update($arr);
if($edited){
return $this->success('修改管理员信息成功!!','lst');
}else{
return $this->error('修改管理员信息失败!!');
}
return;
}
$this->assign('data',$data);
return $this->fetch();
}
视图中
<!-- 隐藏域,主键,让thinkphp知道修改的是哪一条数据 -->
<input type="hidden" name="id" value="{$data.id}" >
<!-- -->
验证器中
<?php
namespace app\admin\validate; use think\Validate;
class Admin extends Validate
{
protected $rule = [
'username' => 'require|max:25',
'password' => 'require|min:32',
]; protected $message = [
'username.require' => '名称必须',
'username.max' => '名称最多不能超过25个字符',
'password.require' => '密码必须',
'password.min' => '密码最少32个字符',
]; protected $scene = [
'add' => ['username'=>'require','password'],
'edit' => ['username'=>'require'],
];
}
三、友情链接功能



和对管理员的操作一样,增删改查
也是一个list表,一个add表,一个edit表
包括控制器,模型,验证,视图四个方面,其实直接把管理员的这些操作弄过来改一改就好了
视图:链接列表
<body>
<!-- 头部 -->
{include file="common/top"}
<!-- /头部 --> <div class="main-container container-fluid">
<div class="page-container"> <!-- Page Sidebar -->
{include file="common/left"}
<!-- /Page Sidebar --> <!-- Page Content -->
<div class="page-content">
<!-- Page Breadcrumb -->
<div class="page-breadcrumbs">
<ul class="breadcrumb">
<li>
<a href="{:url('index/index')}">系统</a>
</li>
<li class="active">链接管理</li>
</ul>
</div>
<!-- /Page Breadcrumb --> <!-- Page Body -->
<div class="page-body"> <button type="button" tooltip="添加链接" class="btn btn-sm btn-azure btn-addon" onClick="javascript:window.location.href = '{:url('links/add')}'"> <i class="fa fa-plus"></i> Add
</button>
<div class="row">
<div class="col-lg-12 col-sm-12 col-xs-12">
<div class="widget">
<div class="widget-body">
<div class="flip-scroll">
<table class="table table-bordered table-hover">
<thead class="">
<tr>
<th class="text-center" width="10%">ID</th>
<th class="text-center">链接名称</th>
<th class="text-center">链接地址</th>
<th class="text-center">链接描述</th>
<th class="text-center" width="20%">操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="value"}
<tr>
<td align="center">{$value.id}</td>
<td align="center">{$value.title}</td>
<td align="center"><a href="{$value.url}" target="_blank">{$value.url}</a></td>
<td align="center">
{if condition="$value['desc'] neq ''"}
{$value.desc}
{else /}
暂无描述
{/if}
</td>
<td align="center">
<a href="{:url('links/edit',array('id'=>$value['id']))}" class="btn btn-primary btn-sm shiny">
<i class="fa fa-edit"></i> 编辑
</a>
· <a href="#" onClick="warning('确实要删除吗', '{:url('links/del',array('id'=>$value['id']))}')" class="btn btn-danger btn-sm shiny">
<i class="fa fa-trash-o"></i> 删除
</a> </td>
</tr>
{/volist} </tbody>
</table>
<div class="text-right" style="margin-top: 10px">
{$list->render()}
</div> </div>
<div>
</div>
</div>
</div>
</div>
</div> </div>
<!-- /Page Body -->
</div>
<!-- /Page Content -->
</div>
</div> <!--Basic Scripts-->
<script src="__PUBLIC__/style/jquery_002.js"></script>
<script src="__PUBLIC__/style/bootstrap.js"></script>
<script src="__PUBLIC__/style/jquery.js"></script>
<!--Beyond Scripts-->
<script src="__PUBLIC__/style/beyond.js"></script> </body>
控制器
<?php
namespace app\admin\controller; use think\Controller;
use think\Db;
use think\Validate;
use think\Loader;
use app\admin\model\Links as LinksModel;
class Links extends controller
{
public function lst()
{
// 分页输出列表 每页显示3条数据
$list = LinksModel::paginate(3);
$this->assign('list',$list);
return view('list');
} public function add()
{
//判断是否为post方法提交
if(request()->isPost()){
// dump(input('post.'));
// 如果提交消息成功,我们就添加消息到数据库 // // 服务器端对数据进行验证
// $validate = new Validate([
// 'username' => 'require|max:25',
// 'password' => 'require|min:32'
// ]);
// 1、接收传递过来的数据 $data=[
'title'=>input('title'),
'url'=>input('url'),
'desc'=>input('desc'),
]; $validate = Loader::validate('Links');
if(!$validate->scene('add')->check($data)){
$this->error($validate->getError()); die;
} // if (!$validate->check($data)) {
// dump($validate->getError());
// die;
// } // if添加成功,就指向success页面
if(Db::name('links')->insert($data)){
return $this->success('添加链接成功!!','lst');
}else{
return $this->error('添加链接失败!!');
}
return;
}
return view();
} public function edit(){ $id=input('id');
$data=db('links')->find($id); //如果是提交过来的数据
if(request()->isPost()){
$arr=[
'id'=>input('id'),
'title'=>input('title'),
'url'=>input('url'),
'desc'=>input('desc'),
]; //验证
$validate = Loader::validate('Links');
if(!$validate->scene('edit')->check($arr)){
$this->error($validate->getError()); die;
}
// 更新数据表中的数据
$edited=db('links')->update($arr);
if($edited){
return $this->success('修改链接信息成功!!','lst');
}else{
return $this->error('修改链接信息失败!!');
}
return;
}
$this->assign('data',$data);
return $this->fetch();
} public function del(){
$id=input('id'); // 根据主键删除 //删除操作
$deleted=db('links')->delete(input('id'));
if($deleted){
return $this->success('删除链接成功!!','lst');
}else{
return $this->error('删除链接失败!!');
} } }
验证
<?php
namespace app\admin\validate; use think\Validate;
class Links extends Validate
{
protected $rule = [
'title' => 'require|max:50',
'url' => 'require',
]; protected $message = [
'title.require' => '链接名称必须填写',
'title.max' => '链接名称最多不能超过50个字符',
'url.require' => '链接地址必须填写', ]; protected $scene = [
'add' => ['title'=>'require','url'],
'edit' => ['title'=>'require','url'],
]; }
模型
<?php
namespace app\admin\model; use think\Model;
class Links extends Model
{ }
四、栏目功能

验证器里面有一个验证表中字段是否重复的功能
<?php
namespace app\admin\validate; use think\Validate;
class Cate extends Validate
{
protected $rule = [
'catename' => 'require|max:25|unique:cate',
]; protected $message = [
'catename.require' => '栏目名称必须填写',
'catename.max' => '栏目名称最多不能超过25个字符',
'catename.unique' => '栏目名称已经存在',
]; protected $scene = [
'add' => ['catename'=>'require|unique:cate'],
'edit' => ['catename'=>'require|unique:cate'],
]; }
验证当前请求的字段值是否为唯一的,例如:
// 表示验证name字段的值是否在user表(不包含前缀)中唯一
'name' => 'unique:user',
thinkphp5项目--个人博客(二)的更多相关文章
- thinkphp5项目--个人博客(八)
thinkphp5项目--个人博客(八) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(七)
thinkphp5项目--个人博客(七) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(六)
thinkphp5项目--个人博客(六) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(五)
thinkphp5项目--个人博客(五) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(四)
thinkphp5项目--个人博客(四) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(三)
thinkphp5项目--个人博客(三) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(一)
thinkphp5项目--个人博客(一) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- 2015-2016-2 《Java程序设计》项目小组博客
2015-2016-2 <Java程序设计>项目小组博客 1451 完+美 java项目 守望先疯 JavaGroup 07_10_20_22 FromBottomToTop L.G.Su ...
- 团队项目系列博客 —— 在路上(之wampserver 修改根目录以及配置多站点以及修改端口号)
团队项目系列博客 -- 在路上(之wampserver 修改根目录以及配置多站点以及修改端口号) 标签(空格分隔): wampserver php 参考:参考文献1.慕课网.知乎.github 一.w ...
随机推荐
- fastjson 的简单使用
public static void main(String[] args) { /*普通对象与json相互转换*/ User u = new User("miquan", &qu ...
- linux 命令 xxd
xxd,能够查看linux下文件的二进制表示.man一下xxd.能够得到下面信息 NAME xxd - make a hexdump or do the reverse. SYNOPSI ...
- bzoj4823: [Cqoi2017]老C的方块(最小割)
4823: [Cqoi2017]老C的方块 题目:传送门 题解: 毒瘤题ORZ.... 太菜了看出来是最小割啥边都不会建...狂%大佬强强强 黑白染色?不!是四个色一起染,四层图跑最小割... 很 ...
- ThinkPHP5.0框架开发--第9章 TP5.0视图和模板
ThinkPHP5.0框架开发--第9章 TP5.0视图和模板 第9章 TP5.0视图和模板 ===================================================== ...
- [codeforces 1037D] Valid BFS? 解题报告(验证bfs序,思维题)
题目链接:http://codeforces.com/problemset/problem/1037/D 题目大意: 给出一棵树,询问一个序列是否可能为这棵树从节点1开始遍历的bfs序 题解: 对于每 ...
- mount ntfs 失败解决办法
在双系统中,ntfs可能会应为windows的缓存而挂载失败.可用下面命令修复. Use ntfsfix in the terminal, even if you can't access Windo ...
- winform控件命名规范对照表
WinForm Control 命名规范 数据类型 数据类型简写 标准命名举例 Label lbl lblMessage LinkLabel llbl llblToday Button btn btn ...
- jQuery学习(一)——jQuery入门
1.jQuery基础 Jquery它是一个库(框架),要想使用它,必须先引入! jquery-1.8.3.js:一般用于学习阶段. jquery-1.8.3.min.js:用于项目使用阶段 官网下载后 ...
- js 40 个技巧
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu= ...
- 关于目标检测 Object detection
NO1.目标检测 (分类+定位) 目标检测(Object Detection)是图像分类的延伸,除了分类任务,还要给定多个检测目标的坐标位置. NO2.目标检测的发展 R-CNN是最早基于C ...