0.先搭建登录
0.1在应用公共文件(common.php)中创建登录方法
function doLogin(){
//进行session判断 首先要建立session值
$id=Session::has('id');
$url=url('index.php/admin/index/login');
if(!$id){
//以下跳转到登录页面
header('location:'.$url);
}
}
0.2 首页的控制器中 index方法中写入dologin()方法
public function index(){
doLogin();
return view('index');
}
0.3 控制器中开始搭建login方法和loginout方法
0.3.1 login方法登录方法:验证登录页面传值,验证通过即登陆成功->跳转首页,验证失败->报错误内容(tp5.1为跳转,建议使用js搭建页内提示)->再次跳转登录页面。
具体代码如下:(mvc模式->c层映射到v层页面->表单输入数值->传输的c层中->c层方法调用m层方法->返回到c层->根据返回结果c层进行下一步操作)
controller层:
public function login(){
if(input('sub')){ //如果view层摁下了提交按钮,此处名字与submit标签内名字相同 没有按下按钮则跳转到登录页面
//创建变量
$name=input('name');
$pwd=sha1(input('pwd'));
$model=new LoginModel();
$value['name']=$name;
$value['pwd']=$pwd;
$rs=$model->check($value);
if ($rs['name']){
//创建session
Session::set('id',$rs['id']);
Session::set('id',$rs['name']);
$this->success('登陆成功','index');
}else{
$this->error('用户名或密码错误','login');
}
}else{
return view('login')
}
}
model层(一下为完整代码):包含check方法,一个接值。接值为一个数组,包含用户名和密码用于数据库查询是否有对应。
<?php
namespace app\admin\model;
use think\Model;
class LoginModel extend Model{
public function check($value){
return $this->where($value)->find();
}
}
view:仅核心表单代码
<form method="post" action="{:url('index.php/admin/index/login')}">
<div class="panel loginbox">
<div class="text-center margin-big padding-big-top"><h1>后台管理系统</h1></div>
<div class="panel-body" style="padding:30px; padding-bottom:10px; padding-top:10px;">
<div class="form-group">
<div class="field field-icon-right">
<input type="text" class="input input-big" name="name" placeholder="登录账号" data-validate="required:请填写账号" />
<span class="icon icon-user margin-small"></span>
</div>
</div>
<div class="form-group">
<div class="field field-icon-right">
<input type="password" class="input input-big" name="pwd" placeholder="登录密码" data-validate="required:请填写密码" />
<span class="icon icon-key margin-small"></span>
</div>
</div>
</div>
<div style="padding:30px;"><input type="submit" class="button button-block bg-main text-big input-big" value="登录" name="sub"></div>
</div>
</form>
0.3.2 loginout方法:清楚session或cookie 点击按钮后跳转loginout方法,清除session,再跳转到login页面。具体代码如下:
controller层:
public function loginoutout(){
session('name','null');
session ('id','null');
}
//此处设置为空的内容为登陆时创建的session值;对应关系。
1.数据库增删改查搭建
1.1创建mvc文件(复制已有代码时 注意更换class后文件名) 切割头尾文件。注意tp5.1的引入文件格式为/static/(原为__STATIC__),model层引入 use think\model; 并继承extend Model
1.2确定方法数量
1.2.1index方法->查询数据->跳转add,edit,del;
1.2.2add方法
1.2.3edit方法(修改方法)
1.2.4del方法(软删除)
1.2.5 controller 中创建方法,代码如下
return 1;
仅能确定index方法可以进入。联通后开始创建index页面。
1.3搭建显示页面
1.3.1在index()方法中映射到index.html
1.3.2查询数据,引入分页。
controller代码:
public function index(){
$model=new AdminModel();
$rs=$model->paginate(5);
$this->assign('rs',$rs);
return view('index');
}
view代码:需要在table外增加分页代码;在循环中 name为定义的数组的名字,id为vo.name
<table class="table table-bordered table-hover tablesorter">
<tr>
<th>编号</th>
<th>管理员姓名</th>
<th>权限等级</th>
<th>操作</th>
</tr>
{volist name="$rs" id="vo"}
<tr>
<th>{$key+1}</th>
<th>{$vo.name}</th>
<th>{if condition="$vo.power==0"}超级管理员{else /}普通用户{/if}</th>
<th><a href="{:url('index.php/admin/admin/del')}?id={$vo.id}">删除</a><a href="{:url('index.php/admin/admin/mod')}?id={$vo.id}">修改</a></th>
</tr>
{/volist}
</table>
<div style="text-align=center">
{$rs|raw}
</div>
1.4 搭建软删除
我们先看看硬删除
controller中的方法:
if(input('id')){
$id=input('id');
$banner=new banner_banner;
$query=$banner->delete_banner($id);
if($query>0){
return $this->success("数据删除成功","index");
}
else{
return $this->error("数据删除失败","index");
}
}
model中:
public function delete_banner($id)
{
return $this->where('id', $id)->delete();
}
软删除就是在数据库中增加一个字段,用于存放数据的删除时间。
使用软删除首先要在model 中增加一下代码
<?php
namespace app\admin\model;
use think\Model;
use think\model\concern\SoftDelete;
class AdminModel extends Model{
//设置数据库的名字
protected $table = 'art_admin';
use SoftDelete;
protected $deleteTime = 'delete_time';//必须 后边名字对应数据库中的字段名,如果数据库中字段为123则此处填写123
protected $updateTime = 'update_time';//必须 记录数据更新时间,要在datebase.php中打开此选项。
}
controller中直接使用destroy(id值)方法即可
public function del(){
$id=input('id');
$model=new AdminModel();
$query=$model->destroy($id);
if($query>0){
return $this->success("数据删除成功","index");
}
else{
return $this->error("数据删除失败","index");
}
}
由于搭建了软删除,所以在查询中增加一个条件,将已经软删除的数据不予以显示。但thinkphp5自动屏蔽了软删除的数据,就不用再更改代码了。
1.5 数据添加
1.5.1 在方法中增加映射页面。
1.5.2 view 表单代码
<form role="form" action="{:url('admin/admin/add')}" method="post">
<div class="form-group">
<label>用户名</label>
<input class="form-control" type="text" placeholder="请输入用户名" name="name" >
<p class="help-block"></p>
</div>
<div class="form-group">
<label>密码</label>
<input class="form-control" type="password" value="" name="pwd" id="pwd" required placeholder="请输入密码" >
<p class="help-block"></p>
</div>
<div class="form-group">
<label>确认密码</label>
<input class="form-control" type="password" value="" name="pwd2" id="pwd2" required placeholder="请再次输入密码" >
<input type="hidden" value="" name="created_at" id="time">
<p class="help-block"></p>
</div>
<div><p class="help-block" id="info"></p></div>
<div class="form-group">
<label>权限</label>
<select class="form-control" name="power">
<option value="1">普通用户</option>
<option value="0">管理员</option>
</select>
</div>
<input type="submit" name="sub" id="sub" class="btn btn-default" value="添加" >
</form>
1.5.3controller中代码 方法主体是一个if else 如果接收到添加按钮,就走if,没有接受到添加按钮就走else即映射页面。
public function add(){
if(input('sub')){
$name=input('name');
$pwd=sha1(input('pwd'));
$power=input('power');
$model= new AdminModel();
$rs=$model->save(['name'=>$name,'pwd'=>$pwd,'power'=>$power]);
if ($rs>0){
return $this->success("数据添加成功","index");
}else{
return $this->error("数据添加失败","add");
}
}else{
return view('add');
}
}
model中 声明创建时间,删除时间,修改时间
<?php
namespace app\admin\model;
use think\Model;
use think\model\concern\SoftDelete;
class AdminModel extends Model{
//设置数据库的名字
protected $table = 'art_admin';
use SoftDelete;
protected $deleteTime = 'delete_time';//必须 后边名字对应数据库中的字段名
protected $createTime = 'create_time';//必须
protected $updateTime = 'update_time';//必须
}
1.6 数据修改
1.6.1 在方法中创建映射 注意跳转链接是否添加。
1.6.2 修改包含两步,首先查询出数据,再修改数据。仍然是一个if else if内写修改代码 else 写显示代码
1.6.3 由于是管理员的修改,要先输入原密码才能更改密码,所以v层加一个原密码
view:
<form role="form" action="{:url('admin/admin/edit')}" method="post">
<div class="form-group">
<label>用户名</label>
<input class="form-control" type="text" value="{$rs.name}" name="name">
<p class="help-block"></p>
</div>
<div class="form-group">
<label>原密码</label>
<input class="form-control" type="password" name="oldPwd">
<p class="help-block"></p>
</div>
<div class="form-group">
<label>新密码</label>
<input class="form-control" type="password" value="" name="pwd" id="pwd">
<p class="help-block"></p>
</div>
<div class="form-group">
<label>确认新密码</label>
<input class="form-control" type="password" value="" name="pwd2" id="pwd2">
<p class="help-block"></p>
</div>
<div class="help-block" id="info"></div>
<div class="form-group">
</div>
<div class="form-group">
<label>权限</label>
<select class="form-control" name="power">
<option value="1" {if condition="$rs.power==1"} selected{/if}>普通用户</option>
<option value="0" {if condition="$rs.power==0"} selected{/if}>超级管理员</option>
</select>
</div>
{notempty name="$rs"}
<input type="hidden" name="id" value="{$rs.id}">
{/notempty}
<input type="submit" name="sub" id="sub" class="btn btn-default" value="修改">
</form>
controller:
1.6.4
save()方法与get($id)使用为修改 不能使用where方法。
public function edit(){
if(input('sub')){
//接收到修改后先验证原始密码是否正确
$id=input('id');
$pwd1=sha1(input('oldPwd'));
$model=new AdminModel();
$rs=$model->where('id',$id)->find();
if($pwd1!=$rs['pwd']){
return $this->error("原密码不正确","edit?id=$id");
}else{
$name=input('name');
$pwd=sha1(input('pwd'));
$power=input('power');
$query=$model->get($id)->save(['name'=>$name,'pwd'=>$pwd,'power'=>$power]);
if ($query>0){
return $this->success("数据修改成功","index");
}else{
return $this->error("数据修改失败","edit?id=$id");
}
}
}else{
$id=input('id');
$model = new AdminModel();
$rs=$model->where('id',$id)->find();
$this->assign('rs',$rs);
return view('edit');
}
}
2.0.0 banner的增删改查
2.1.1 创建所需要文件 比如复制刚刚写好的那个。
2.1.2 修改BannerModel 名字 ,数据库名字,引入软删除方法。
经修改后原始文件
Model:
<?php
namespace app\admin\model;
use think\Model;
use think\model\concern\SoftDelete;
class BannerModel extends Model{
//设置数据库的名字
protected $table = 'art_Banner';
use SoftDelete;
protected $deleteTime = 'delete_time';//必须 后边名字对应数据库中的字段名
protected $createTime = 'create_time';//必须
protected $updateTime = 'update_time';//必须
}
controller:
<?php
namespace app\admin\controller;
class Banner extends Comm {
public function index(){
}
public function add(){
}
public function edit(){
}
public function del(){
}
}
view:修改标题,修改所有的链接,修改表头,内容替换。
未完,年更。
欢迎留言提出问题。。
转载:https://blog.csdn.net/leofind/article/details/104683583