99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

tpframe之添加數(shù)據(jù)

2018-03-23 15:18 更新

為了保證數(shù)據(jù)的原子性,建議最好一個(gè)邏輯(logic層)操作對(duì)應(yīng)一張表

如果你還不清楚整個(gè)網(wǎng)站的應(yīng)用目錄結(jié)構(gòu),再去看看再來(lái)進(jìn)行后續(xù)的操作。

再次強(qiáng)調(diào)一下目錄分層結(jié)構(gòu):

controller:控制器層,起控制轉(zhuǎn)發(fā)功能,不管邏輯

logic:邏輯層,主要處理邏輯、數(shù)據(jù)庫(kù)操作等

service:服務(wù)層,數(shù)據(jù)驗(yàn)證、事務(wù)處理、數(shù)據(jù)后期處理等操作

model:模型層,數(shù)據(jù)處理層(已經(jīng)封裝好,直接繼承于BaseModel),自動(dòng)完成,自動(dòng)修改等操作

validate:數(shù)據(jù)驗(yàn)證層,數(shù)據(jù)進(jìn)行curd操作的時(shí)候最好對(duì)數(shù)據(jù)進(jìn)行嚴(yán)格驗(yàn)證

view:視圖層

一、創(chuàng)建數(shù)據(jù)庫(kù)

要插入數(shù)據(jù)所先得有自己的數(shù)據(jù)庫(kù),如果你已經(jīng)有了就不用創(chuàng)建了,例如我這里有一個(gè)用戶(hù)表

| 主鍵 | 用戶(hù)名 | 密碼 | | id | username | password |

主鍵設(shè)置為自動(dòng)遞增

二、創(chuàng)建控制層

在你的模塊controller里面創(chuàng)建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");
    }
}

控制器里面相當(dāng)?shù)母蓛?,這里用到Core這個(gè)核心類(lèi),Core::loadModel($this->name)它就會(huì)自動(dòng)定位到相應(yīng)service層下面對(duì)應(yīng)的類(lèi)了,這里它就定位到service層下的User類(lèi),并調(diào)用它的saveUser方法

控制器說(shuō)明:

前端控制器都要繼承FrontendBase基類(lèi),訪基本又繼承ControllerBase類(lèi)

打開(kāi)FrontendBase你可以看到里面什么都沒(méi)有,為什么要繼承這個(gè)類(lèi),而不直接繼承ControllerBase類(lèi)?每因?yàn)閭€(gè)模塊在執(zhí)行之前可能要進(jìn)行一些不同的操作

三、創(chuàng)建服務(wù)器

在你的service模塊里面創(chuàng)建User.php

<?php // +---------------------------------------------------------------------- // | Author: yaoyihong <510974211@qq.com> // +---------------------------------------------------------------------- namespace app\frontend\service;


use app\common\service\ServiceBase;
use \tpfcore\Core;
/**
 * 基礎(chǔ)服務(wù)
 */
class User extends FrontendBase
{
    public function saveUser($data){
        // 在進(jìn)行數(shù)據(jù)操作前進(jìn)行數(shù)據(jù)驗(yàn)證
        $validate=\think\Loader::validate($this->name);
        $validate_result = $validate->scene('add')->check($data);
        if (!$validate_result) {    
            return [RESULT_ERROR, $validate->getError(), null];
        }
        return Core::loadModel($this->name)->saveObject($data);
    }
}

這里面進(jìn)行的操作便是數(shù)據(jù)驗(yàn)證,邏輯調(diào)用,或后期數(shù)據(jù)處理等操作

四、創(chuàng)建邏輯層

在你的公共模塊logic里面創(chuàng)建User.php

<?php namespace app\frontend\logic; use \tpfcore\Core; class User extends FrontendBase { public function saveUser($data){ $result=self::saveObject($data); if($result){ return [RESULT_SUCCESS,"操作成功"]; } return [RESULT_ERROR,"操作失敗"]; } }

這里為什么要?jiǎng)?chuàng)建在公共模塊?目的就是想讓很多模塊能共用邏輯,我們以后要擴(kuò)展功能 的時(shí)候,少寫(xiě)重復(fù)的邏輯。

這里的添加就用了一句話(huà)self::saveObject($data);為什么這樣就能添加了呢?當(dāng)然我里面是封裝好了的,但是,添加的時(shí)候傳遞過(guò)來(lái)的參數(shù)是有要求的,<span style="color:#F00">必須跟數(shù)據(jù)庫(kù)里面的字段對(duì)應(yīng)</span>,例如這里的$data格式一定是下面這樣 的

array( 'username'=>"用戶(hù)名", 'password'=>"密碼的值" )

五、數(shù)據(jù)驗(yàn)證層

在你的模塊validate里面創(chuàng)建User.php

<?php namespace app\frontend\validate; class User extends FrontendBase { // 驗(yàn)證規(guī)則 protected $rule = [ 'username' => 'require', 'password' => 'require', ];


    // 驗(yàn)證提示
    protected $message = [
        'username.require'          => '用戶(hù)名必須',
        'password.require'          => '密碼必須',
    ];


    // 應(yīng)用場(chǎng)景
    protected $scene = [
        'add'  =>  ['username','password']
    ];
}

我這里就只能數(shù)據(jù)進(jìn)行了簡(jiǎn)單的驗(yàn)證,在邏輯層里面進(jìn)行簡(jiǎn)單的調(diào)用,指定驗(yàn)證場(chǎng)景,就會(huì)自動(dòng)進(jìn)行這里面的數(shù)據(jù)驗(yàn)證了,具體更詳細(xì)的驗(yàn)證規(guī)則請(qǐng)點(diǎn)擊https://www.kancloud.cn/manual/thinkphp5/129320進(jìn)行查看

六、視圖層

視圖層我就簡(jiǎn)單的寫(xiě)一下,在theme/frontend/default新建立一個(gè)User文件夾,然后創(chuàng)建一個(gè)add.html文件,內(nèi)容如下

<!DOCTYPE html> <html> <head> <title>添加用戶(hù)</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="操作注冊(cè)"/> </form> </body> </html>

打開(kāi)瀏覽器訪問(wèn):http://你的域名/user/add測(cè)試一下效果

這里我沒(méi)有用到Model層,因?yàn)槲覜](méi)有用到數(shù)據(jù)自動(dòng)完成或數(shù)據(jù)自動(dòng)修改功能,以后我會(huì)用一個(gè)實(shí)例來(lái)補(bǔ)充它的用法

這就完成了數(shù)據(jù)的基本添加操作了

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)