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项目--个人博客(二)的更多相关文章

  1. thinkphp5项目--个人博客(八)

    thinkphp5项目--个人博客(八) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  2. thinkphp5项目--个人博客(七)

    thinkphp5项目--个人博客(七) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  3. thinkphp5项目--个人博客(六)

    thinkphp5项目--个人博客(六) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  4. thinkphp5项目--个人博客(五)

    thinkphp5项目--个人博客(五) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  5. thinkphp5项目--个人博客(四)

    thinkphp5项目--个人博客(四) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  6. thinkphp5项目--个人博客(三)

    thinkphp5项目--个人博客(三) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  7. thinkphp5项目--个人博客(一)

    thinkphp5项目--个人博客(一) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  8. 2015-2016-2 《Java程序设计》项目小组博客

    2015-2016-2 <Java程序设计>项目小组博客 1451 完+美 java项目 守望先疯 JavaGroup 07_10_20_22 FromBottomToTop L.G.Su ...

  9. 团队项目系列博客 —— 在路上(之wampserver 修改根目录以及配置多站点以及修改端口号)

    团队项目系列博客 -- 在路上(之wampserver 修改根目录以及配置多站点以及修改端口号) 标签(空格分隔): wampserver php 参考:参考文献1.慕课网.知乎.github 一.w ...

随机推荐

  1. HDU——T The King’s Problem

    http://acm.hdu.edu.cn/showproblem.php?pid=3861 Time Limit: 2000/1000 MS (Java/Others)    Memory Limi ...

  2. 洛谷 P2652 同花顺

    P2652 同花顺 题目背景 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续. 题目描述 现在我手里有n张扑克牌,但它们可能并不能凑成同花顺.我现在想知道,最少更换其中的多少张牌,我能让这 ...

  3. linux svn命令具体解释

    检測是否安装svn:svnserve --version svn服务的关闭:killall svnserve 创建svn库:svnadmin create /opt/svn/repos 配置自己主动启 ...

  4. UVa 12716 GCD XOR (简单证明)

    题意: 问 gcd(i,j) = i ^ j  的对数(j <=i <= N ) N的范围为30000000,有10000组例子 思路:GCD(a,b) = a^b = c GCD(a/c ...

  5. HDOJ 5299 Circles Game 圆嵌套+树上SG

    将全部的圆化成树,然后就能够转化成树上的删边博弈问题.... Circles Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: ...

  6. RT-Thread开篇

    一直以来对操作系统都有一种既仰慕又畏惧的情感.一方面被操作系统的强大深深吸引.还有一方面又被操作系统的复杂性感到畏惧. 记得在学校的时候也学过一些操作系统的理论知识,但也只限于理论,更似人云亦云. 本 ...

  7. Matlab pchiptx

    function v = pchiptx(x,y,u) %PCHIPTX Textbook piecewise cubic Hermite interpolation. % v = pchiptx(x ...

  8. 87.node.js操作mongoDB数据库示例分享

    转自:https://www.cnblogs.com/mracale/p/5845148.html 连接数据库   var mongo=require("mongodb"); va ...

  9. 区间不相交&区间覆盖

    //code by virtualtan 2018 寒7 区间不相交 #include <cstdio> #include <algorithm> #define MAXN 1 ...

  10. pugixml读取unicode编码的xml文件的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 实际上在多字节编码的情况下,即以记事本打开显示的ANSI编码的,如下图: pugixml是可以直接读取中文字符的,示例 ...