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. 王立平--自己定义TitleBar

    效果: 1.自己定义titleBar的布局. <?xml version="1.0" encoding="utf-8"?> <Relative ...

  2. nyoj 585 取石子(六) 【Nim】

    取石子(六) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 近期TopCoder的PIAOYI和HRDV非常无聊,于是就想了一个游戏,游戏是这种:有n堆石子,两个人 ...

  3. bzoj1019: [SHOI2008]汉诺塔(动态规划)

    1019: [SHOI2008]汉诺塔 题目:传送门 简要题意: 和经典的汉诺塔问题区别不大,但是题目规定了一个移动时的优先级: 如果当前要从A柱子移动,但是A到C的优先级比A到B的优先级大的话,那就 ...

  4. (一)Eureka 服务的注册与发现

    (一)服务的注册于发现(eureka); Eureka Server: 服务注册中心,负责服务列表的注册.维护和查询等功能 在Idea里,新建项目,选择Spring initializer. 下面的p ...

  5. Photoshop CC (2015.5) 2016.6 版已发布

    Photoshop CC (2015.5) 2016.6 版已发布 adobe-cc-no-more-direct-download-links.html 不再有直接下载的升级包了,不开心 :( 下载 ...

  6. 51nod 1158 全是1的最大子矩阵(单调栈 ,o(n*m))

    前置问题:51nod 1102 面积最大的矩形 附上链接: 51nod 1102 面积最大的矩形 这题的题解博客 需要了解的知识:单调栈,在前置问题中已经讲解. 解题思路 对每行求左边连续1的个数,得 ...

  7. js中深拷贝代码实现

    function copy(original,o){ if(typeof original != 'object') return original; var o = o || (Array.isAr ...

  8. hiho1605 - 递推+1000000000=矩阵快速幂

    题目链接 题目大意 小Hi最近对生成树(包含所有顶点的联通无环子图.)非常的感兴趣,他想知道对于特定的简单平面无向图是不是存在求生成树个数的简单方法. 小Hi定义了这样的图:一个以{0,1,2……n} ...

  9. swift语言点评十一-Methods

    Assigning to self Within a Mutating Method Mutating methods can assign an entirely new instance to t ...

  10. How Javascript works (Javascript工作原理) (四) 事件循环及异步编程的出现和 5 种更好的 async/await 编程方式

    个人总结: 1.讲解了JS引擎,webAPI与event loop合作的机制. 2.setTimeout是把事件推送给Web API去处理,当时间到了之后才把setTimeout中的事件推入调用栈. ...