摘要:完成了增删改查以及搜索扩展等功能,搜索功能又一个小问题,这个地方,是需要遍历么?还是写死呢?遍历的话遍历得到的是字段的值如何转为汉字呢?总结起来就是运用写好的简单框架,然后继承一下框架基类,运用框架基类来运行项目,一个模型类负责一张数据表,控制器来负责将模型传过来的数据运用框架Plates类的方法来创建模板和模板变量,然后在视图中进行输出遍历.然后视图用表单的方式传入到控制器中,再运用控制器中ne
完成了增删改查以及搜索扩展等功能,搜索功能又一个小问题,
这个地方,是需要遍历么?还是写死呢?遍历的话遍历得到的是字段的值如何转为汉字呢?
总结起来就是运用写好的简单框架,然后继承一下框架基类,运用框架基类来运行项目,一个模型类负责一张数据表,控制器来负责将模型传过来的数据运用框架Plates类的方法来创建模板和模板变量,然后在视图中进行输出遍历.然后视图用表单的方式传入到控制器中,再运用控制器中new一个对应数据表的模型类,使用模型基类中的方法增删改数据.
登陆功能主要是运用session,验证表单成功后将得到的结果的唯一值name传到session中依据session来判断是否登陆
plates框架主要功能: render('模版目录代名::控制器文件夹/方法',['模板变量名1' => '值','模板变量名2' => '值2',....])
下面是主要代码 admin模块 Index.php控制器
<?php
namespace app\admin\controller;
session_start();
use app\model\User;
use hero\core\Controller;
class Index extends Controller
{
public function __construct()
{
parent::__construct();
}
//测试
public function demo($name='老王',$age=26)
{
return '我是:'.$name.',今年'.$age.',你凭什么说我!';
}
//用户信息列表
public function index()
{
@$cond = $_POST['field']; //没有值也忽略错误先
if(isset($cond)){
$search = $cond.'[~]';
$rows = (new User())->select('user',['id','name','email','dept','art','create_time'],[
//搜索功能,如果用户提交了搜索条件,则根据条件搜索,否则显示全部
$search => isset($_POST['dept']) ? $_POST['dept'] : null
]);
}else{
$rows = (new User())->select('user',['id','name','email','dept','art','create_time']);
}
return $this->view->render('admin::index/index',[
'rows' => $rows,
'title' => '武林大会!',
'loginUrl' => '/admin/index/login', //登录
'logoutUrl' => '/admin/index/logout', //退出
'indexUrl' => '/admin/index/index', //返回首页
'insUrl' => '/admin/index/insert', //添加操作
'editUrl' => '/admin/index/edit', //编辑操作
'delUrl' => '/admin/index/delete', //删除操作
]);
}
//管理员登录
public function login()
{
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//验证用户
$res = (new User())->get('admin',['name','email','password'],[
'AND'=>[
'email' => $_POST['email'],
'password' => sha1($_POST['password']),
]
]);
// var_dump($res);
if($res == false){
echo "<script>alert('邮箱或者密码不正确');location.href='/';</script>";
}else{
$_SESSION['name'] = $res['name'];
echo "<script>alert('登录成功!');location.href='/';</script>";
}
}
}
//退出登录
public function logout()
{
session_destroy();
echo "<script>alert('退出成功!');location.href='/';</script>";
}
//添加数据:1.分两步: 1.渲染出一个添加表单;2.执行添加操作写入表中
//渲染添加表单
public function insert()
{
return $this->view->render('admin::index/insert',[
'title' => '添加记录',
'url' => '/admin/index/add'
]);
}
//执行添加操作
public function add()
{
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//执行添加操作
(new User())->insert('user',[
'name' => $_POST['name'],
'dept' => $_POST['dept'],
'email' => $_POST['email'],
'art' => $_POST['art'],
'create_time' => time(),
]);
echo "<script>alert('添加成功!');location.href='/';</script>";
}
}
//编辑操作
//1.渲染编辑模板,
public function edit($id='')
{
$row = (new User())->get('user',['id','name','dept','art','email'],['id'=>$id]);
return $this->view->render('admin::index/edit',[
'title' => '编辑用户',
'url' => '/admin/index/save',
'row' => $row,
]);
}
//2.执行编辑操作
public function save($id)
{
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//执行添加操作
(new User())->update('user',[
'name' => $_POST['name'],
'dept' => $_POST['dept'],
'email' => $_POST['email'],
'art' => $_POST['art'],
],['id'=>$id]);
echo "<script>alert('更新成功!');location.href='/';</script>";
}
}
//执行删除操作
public function delete($id)
{
$res = (new User())->delete('user',['id'=>$id]);
if($res){
echo "<script>alert('删除成功!');location.href='/';</script>";
}
}主要模板文件 view/index(admin模块/Index控制器/index方法的模板)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title><?=$this->e($title) ?></title>
<link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
<?php if(isset($_SESSION['name']) && $_SESSION['name'] == 'admin'): ?>
<p>欢迎管理员:<?=$this->e($_SESSION['name']);?> | <a href="<?=$this->e($logoutUrl)?>">退出</a></p>
<?php else :?>
<form action="<?=$this->e($loginUrl) ?>" method="post">
邮箱:<input type="text" name="email" required>
密码:<input type="password" name="password">
<button>管理员登陆</button>
</form>
<?php endif;?>
<table border="1" >
<caption>
舞林大会登记表
<?php if(isset($_SESSION['name']) && $_SESSION['name'] == 'admin'): ?>
<small><a href="<?=$this->e($insUrl) ?>">添加</a></small>
<?php endif;?>
</caption>
<tr>
<th>ID</th>
<th>姓名</th>
<th>门派</th>
<th>必杀技</th>
<th>邮箱</th>
<th>注册时间</th>
<?php if(isset($_SESSION['name']) && $_SESSION['name'] == 'admin'): ?>
<th>操作</th>
<?php endif; ?>
</tr>
<?php foreach ($rows as $row) :?>
<tr>
<td><?=$this->e($row['id']) ?></td>
<td><?=$this->e($row['name']) ?></td>
<td><?=$this->e($row['dept']) ?></td>
<td><?=$this->e($row['art']) ?></td>
<td><?=$this->e($row['email']) ?></td>
<td><?=$this->e(date('Y-m-d',$row['create_time'])) ?></td>
<?php if(isset($_SESSION['name']) && $_SESSION['name'] == 'admin'): ?>
<td><a href="<?=$this->e($editUrl) ?>/id/<?=$this->e($row['id']);?>">编辑</a> /
<a href="javascript:;" onclick="del(<?=$this->e($row['id']);?>); return false">删除</a>
</td>
<?php endif; ?>
</tr>
<?php endforeach;?>
</table>
<!--搜索功能-->
<form action="<?=$this->e($indexUrl) ?>" method="post">
<select name="field">
<option value="dept" selected = "selected">门派</option>
<option value="name">姓名</option>
<option value="email">邮箱</option>
<option value="art">必杀技</option>
</select>
搜索: <input type="text" name="dept" placeholder="请输入关键字">
<button>搜索</button>
</form>
<script>
function del(id) {
if(confirm('是否删除 id='+id+'的记录?')){
location.href="/admin/index/delete/id/"+id;
}
}
</script>
</body>
</html>
批改老师:天蓬老师批改时间:2018-12-11 08:57:32
老师总结:无论再大的项目,都是由这些小部件组成, 只有掌握每一个基础功能的写法,才能开发大型商业项目