改虚拟主机
(用www.tp5.com直接访问替代localhost/blog/tp5/public)
1.host修改
位置C:\Windows\System32\drivers\etc
127.0.0.1 www.tp5.com 127.0.0.1 localhost
2.httpd.conf
Include conf/extra/httpd-vhosts.conf//去掉前面的#
3.httpd-vhosts.conf
<VirtualHost *:80> #网站根目录 DocumentRoot "C:\wamp64\www\blog\tp5\public" #域名 ServerName www.tp5.com #这里配置欢迎首页面 DirectoryIndex index.html index.htm index.php <Directory /> Options FollowSymLinks #不允许别人修改我们的页面 AllowOverride None #设置访问权限 order allow,deny Allow from all </Directory>
访问tp5控制器里面的方法
www.tp5.com/index/index/index//模块 控制器 方法
配置index里面的config.php
这里的config.php只是覆盖全局里面对应部分的配置,而并不是所有的。
return [ 'view_replace_str'=> ['__PUBLIC__'=>SITE_URL.'/public/static/index', '__ROOT__' => '/', ], ];//这个配置的作用是用__PUBLIC__代替一个路径
在public里面的index定义了一个常量
define('SITE_URL','http://127.0.0.1/blog/tp5');//用SITE_URL指向了站点根目录
这样
__PUBLIC__就能够代替http://127.0.0.1/blog/tp5//public/static/index这个路径
这样前台的模板文件js图片等都放到了这个路径而且用
__PUBLIC__就能够在html里面代替整个路径
模板的分离
把前端里面重复的部分提出来到
在view里面新建common文件夹里面包含下面的文件
foot.html
header.html
然后把重复部分删除掉用下面的代替
{include file='common/header'} {include file='common/foot'}
后端做类似的操作
分理出top和left
数据表的建立
tp_admin(id,username,password)
tp_article(id,title,des,keyword,content,author,time,click,pic,state,cateid)
tp_cate(id,catename)
tp_tags(id,tagname)
点击链接修改
index修改如下内容
<li><a href="{:url('admin/lst')}">//主要改这里<span class="menu-text">管理列表</span><i class="menu-expand"></i></a></li>
lst里面主要改
<button type="button" tooltip="添加用户" class="btn btn-sm btn-azure btn-addon" onClick="javascript:window.location.href ='{:url('admin/add')}'">//主要改这里 <i class="fa fa-plus"></i> Add </button>
数据库的连接
相关的database.php设置
主要设置如下
'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'blog', // 用户名 'username' => 'root', // 密码 'password' => '123456', // 数据库表前缀 'prefix' => 'tp_',
add函数里面用数组接收用户名和密码
$date=[ 'username'=>input('username'), 'password'=>md5(input('password')), ];
使用db助手函数之前要引入
use think\Db;
用db('admin')->insert($date)插入数据到数据库如果成功,显示添加成功并返回到lst列表
if(db('admin')->insert($date)){ return $this->success('添加成功','lst'); }else{ return $this->error('添加失败'); }
数据验证
前台js也会进行验证的,不过知道这种方法也是不错的
use think\Validate;//引入
$validate = new Validate([ 'username'=>'require|max:25', 'password'=>'require|max:32']);//数据接收之前进行限制 $date=[ 'username'=>input('username'), 'password'=>md5(input('password')), ]; if (!$validate->check($date))//如果不满足限制报错,结束程序 {$this->error($validate->getError()); die;}
验证场景
在Admin文件夹下面新建validate文件夹,里面建一个Admin.php内容如下
<?php namespace app\admin\validate; use think\Validate; class Admin extends Validate { protected $rule=[ 'username'=>'require|max:25', 'password'=>'require' ];//验证规则 protected $message=[ 'username.require' =>'管理员名称必填', 'username.max'=>'名称不能大于25个字符', 'password.require'=>'管理员密码必填' ];//自定义违反规则提示文字 protected $scene=[ 'add'=>['username'], ];//验证场景,例如在添加管理员里面的验证只用到验证规则的username的规则,如果想要用到多个规则可以'add'=>['username','password'],还可以这样'add'=>['username|max:25','password'], }
写好的验证怎么用呢?
如下
$validate=\think\Loader::validate('Admin'); if (!$validate->scene('add')->check($date)) {$this->error($validate->getError()); die;}
管理员列表及分页
model.php
<?php namespace app\admin\model; use think\Model; class Admin extends Model { }
控制器下面的lst方法如下使用之前要使用
use app\admin\model\Admin as AdminModel;//因为重名了我们as一下
public function lst(){ $list = AdminModel::paginate(3);//每页显示三条记录 $this->assign('list',$list); return $this->fetch(); }
lst模板下面
{volist name='list' id='vo'} <tr> <td align="center">{$vo.id}</td> <td align="center">{$vo.username}</td> <td align="center"> <a href="{:url('admin/edit',array('id'=>$vo['id']))}" class="btn btn-primary btn-sm shiny">//编辑操作 <i class="fa fa-edit"></i> 编辑 </a> <a href="#" onClick="warning('确实要删除吗', '{:url('admin/del',array('id'=>$vo['id']))}')" class="btn btn-danger btn-sm shiny">//删除操作 <i class="fa fa-trash-o"></i> 删除 </a> </td> </tr> {/volist}
管理员删除修改操作
public function del(){ $id=input('id'); if($id!=2){ if(db('admin')->delete(input('id'))){ $this->success('删除管理员成功!','lst'); }else{ $this->error('删除管理员失败'); } }else{ $this->error('初始化管理员不能删除'); } }
public function edit(){ $id=input('id'); $admins=db('admin')->find($id); if(request()->isPost()){ $date=[ 'id'=>input('id'), 'username'=>input('username'), ]; if(input('password')){ $date['password']=md5(input('password')); }else{ $date['password']=$admins['password']; } if(db('admin')->update($date)){ $this->success("修改成功",'lst'); }else{ $this->error("修改失败"); } return; } $this->assign('admins',$admins); return $this->fetch(); }