thinkPHP5 使用(數據添加-用戶)
寫在前面:作爲一個專注於前端的垃圾工程師,自己寫後臺肯定要使用框架,有點es6的基礎,所有的編程語言和框架都有共性,所以就入了think的坑,雖然think開發文檔還不錯,但是有些小白看來還是有點懵,而且還難記住,沒記住又難以使用,在實現某個項目功能就無從下手,因此我按常用的方式整理了一下。
1.require()->isPost()/isGet()判斷是post還是get請求
2.$data=[];//一般用這個將前臺提交的數據獲取
use\think\Db//這是必不可少的引入數據庫類
$data=[
'username' =>input('username'),//數據表列名 =>表單的name名
'password' =>input('password'),
];
Db::name('admin')->insert($data)
//一般來說;密碼類的還是用一下md5加密
'password' =>md5(input('password')),
/*===========
thinkphp手冊描述
=============*/
//使用 Db 類的 insert 方法向數據庫提交數據
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::table('think_user')->insert($data);
//如果你在 database.php 配置文件中配置了數據庫前綴( prefix ),那麼可以直接使用 Db 類的
name 方法提交數據
Db::name('user')->insert($data);
db('user')->insert($data);//助手函數提交數據
3.驗證器
一種是獨立驗證,但不是tp5推薦方式,就自己看開發文檔吧!
然後是tp5的推薦方式:爲具體的驗證場景或者數據表定義好驗證器類,直接調用驗證類的 check 方法即可完成驗證。
namespace app\index\validate;//根據命名空間我們也會知道這個驗證類就是
//application/index下建立一個validate的文件夾放入Admin驗證類
use think\Validate;
class Admin extends Validate
{
protected $rule = [
'name' => 'require|max:25',
'email' => 'email',
],
}
//驗證錯誤信息,可以支持驗證規則和錯誤信息一起定義的方式,如下:
.....
protected $message = [
'username.require' => '名稱必須',
'username.max' => '名稱最多不能超過25個字符',
'password.require' =>'管理員密碼必須填寫'
];
.....
//驗證場景:
protected $scene = [
'edit' => ['name','age'],//編輯時的場景,驗證username
];
在admin控制器下使用驗證類
$validate = \think\Loader::validate('Admin');
$validate->scene('add')->check($data)//這個返回的是boolean值
//若符合驗證爲1,不符合爲0
4.分頁輸出
數據的輸出在mvc框架中,m是模型數據,這樣也就意味着將數據渲染到視圖需要經過,model。
在application/admin/下創建一個model文件夾,在創建一個Admin模型,即Admin.php
這樣才能拿到數據表admin的數據
然後用在html裏進行模板渲染
{volist name="list" id="vo"}
{/volist}
namespace app\admin\model;
use think\Model;
/*很重要的一點是模型數據是有規定的模型數據的類必須以數據表爲基準*/
class Admin extends Model
{
//自定義初始化
protected function initialize()
{
//需要調用`Model`的`initialize`方法
parent::initialize();
//TODO:自定義的初始化
}
}
在index控制器下使用
<?php
namespace app\admin\controller;
use think\Controller;
use app\admin\model\Admin as AdminModel;
class Index extends Controller
{
public function index()
{
$list = AdminModel::paginate(2);//意思就是從indexmodel裏拿到模型數據,並且分頁
$this -> assign('list',$list);//將數據分配到index控制器下的視圖的list上面
return $this -> fetch();
}
}