摘要:完成了增删改查以及搜索扩展等功能,搜索功能又一个小问题,这个地方,是需要遍历么?还是写死呢?遍历的话遍历得到的是字段的值如何转为汉字呢?总结起来就是运用写好的简单框架,然后继承一下框架基类,运用框架基类来运行项目,一个模型类负责一张数据表,控制器来负责将模型传过来的数据运用框架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
老师总结:无论再大的项目,都是由这些小部件组成, 只有掌握每一个基础功能的写法,才能开发大型商业项目