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 ...
随机推荐
- ASP.NET--Attribute定义及用法
1.Attribute定义 公共语言运行时允许添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .N ...
- 【转载】SQLITE3 使用总结
转载自网友董淳光的文章. 前序: 这里要注明,我是一个跨平台专注者,并不喜欢只用 windows 平台.我以前的工作就是为 unix 平台写代码.下面我所写的东西,虽然没有验证,但是我已尽量不使用任何 ...
- 自己主动化測试程序之中的一个自己定义键盘的模拟測试程序(C语言)
一.測试程序编写说明 我们做的终端设备上运行的是QT应用程序.使用自己定义的键盘接口.经过測试人员长时间的人机交互測试,来确认系统的功能是否满足需求. 如今须要编写一个自己主动化的測试程序,能够依照预 ...
- 浅谈关于collection接口及相关容器类(一)
Collection在英文单词的意思是:採集,收集. 而在JAVA API 文档中它是一个收集数据对象的容器. Collection作为容器类的根接口.例如以下图(部分子接口未写出): waterma ...
- android 推断手机是否支持前置摄像头
话不多说 直接上代码, @SuppressLint("NewApi") public static boolean isSupportFrontCamera() { if (!ha ...
- oracle 11g sql developer安装后无法使用
oracle11g安装后出现 再去官网单独下来个sql developer安装 sql developer须要jre支持
- Light OJ 1317 Throwing Balls into the Baskets 概率DP
n个人 m个篮子 每一轮每一个人能够选m个篮子中一个扔球 扔中的概率都是p 求k轮后全部篮子里面球数量的期望值 依据全期望公式 进行一轮球数量的期望值为dp[1]*1+dp[2]*2+...+dp[ ...
- TS 函数解析
------------------------------------------------------------------------------------ 函数传参: //let myA ...
- vc应用CPictureEx类(重载CStatic类)加载gif动画
1.PictureEx.h文件: //////////////////////////////////////////////////////////////////////// PictureEx. ...
- [转]Adobe CC 2018 下载链接 Creative Cloud 2018 - Creative Cloud 2018 – Adobe CC 2018 Download Links
Creative Cloud 2018 – Adobe CC 2018 Download Links – ALL Languages Adobe CC 2018Direct Downloads Win ...