为了保证数据的原子性,建议最好一个逻辑(logic层)操作对应一张表
如果你还不清楚整个网站的应用目录结构,再去看看再来进行后续的操作。
再次强调一下目录分层结构:
controller:控制器层,起控制转发功能,不管逻辑
logic:逻辑层,最要处理逻辑,数据操作等
service:服务层,可不用,当一个操作涉及到多个Logic操作并涉及到事务等操作的时候,这层就显得很重要了
model:模型层,数据处理层(已经封装好,直接继承于BaseModel),自动完成,自动修改等操作
validate:数据验证层,数据进行curd操作的时候最好对数据进行严格验证
view:视图层
接下来看怎么写入数据
创建数据库
要插入数据所先得有自己的数据库,如果你已经有了就不用创建了,例如我这里有一个用户表
| 主键 | 用户名 | 密码 |
| id | username | password |
主键自动递增,别忘记了
创建控制层
在你的模块controller里面创建User.php
<?php
namespace app\frontend\controller;
use \tpfcore\Core;
class User extends FrontendBase
{
public function add()
{
IS_POST && $this->jump(Core::loadModel($this->name)->saveUser($this->param));
return $this->fetch("add");
}
}
控制器里面相当的干净,这里用到Core这个核心类,Core::loadModel($this->name)它就会自动定位到相应logic层下面对应的类了,这里它就定位到logic层下的User类,并调用它的saveUser方法
创建逻辑层
在你的模块logic里面创建User.php
<?php
namespace app\frontend\logic;
use \tpfcore\Core;
class User extends FrontendBase
{
public function saveUser($data){
// 数据验证
$validate=\think\Loader::validate($this->name);
$validate_result = $validate->scene('add')->check($data);
if (!$validate_result) {
return [RESULT_ERROR, $validate->getError(), null];
}
$result=self::saveObject($data);
if($result){
return [RESULT_SUCCESS,"操作成功"];
}
return [RESULT_ERROR,"操作失败"];
}
}
这里用到了数据验证,当然须要验证层的东西(接下来加)
这里的添加就用了一句话self::saveObject($data);为什么这样就能添加了呢?当然我里面是封装好了的,但是,添加的时候传递过来的参数是有要求的,必须跟数据库里面的字段对应,例如这里的$data格式一定是下面这样 的
array(
'username'=>"用户名",
'password'=>"密码的值"
)
数据验证层
在你的模块validate里面创建User.php
<?php
namespace app\frontend\validate;
class User extends FrontendBase
{
// 验证规则
protected $rule = [
'username' => 'require',
'password' => 'require',
];
// 验证提示
protected $message = [
'username.require' => '用户名必须',
'password.require' => '密码必须',
];
// 应用场景
protected $scene = [
'add' => ['username','password']
];
}
我这里就只能数据进行了简单的验证,在逻辑层里面进行简单的调用,指定验证场景,就会自动进行这里面的数据验证了,具体更详细的验证规则请点击https://www.kancloud.cn/manual/thinkphp5/129320进行查看
视图层
视图层我就简单的写一下,在theme/frontend/default新建立一个User文件夹,然后创建一个add.html文件,内容如下
<!DOCTYPE html>
<html>
<head>
<title>添加用户</title>
</head>
<body>
<form method="post" action="{:url('User/add')}">
<input type="text" name="username"/><br/>
<input type="password" name="password"/><br/>
<input type="submit" value="操作注册"/>
</form>
</body>
</html>
打开浏览器访问:http://你的域名/user/add测试一下效果
这里我没有用到Model层,因为我没有用到数据自动完成或数据自动修改功能,以后我会用一个实例来补充它的用法
这就完成了数据的添加操作了,有什么问题留言....