面對一個新框架安裝好了一般不知道要幹啥。那就先做一個寫入功能先。
先準備好工作先,首先要連接上資料庫。
設定檔在application下的database.php裡
return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'shoptest', // 用户名 'username' => 'root', // 密码 'password' => '', // 端口 'hostport' => '3306', // 连接dsn 'dsn' => '', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', // 数据库调试模式 'debug' => true, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 是否严格检查字段是否存在 'fields_strict' => true, // 数据集返回类型 'resultset_type' => 'array', // 自动写入时间戳字段 'auto_timestamp' => false, // 时间字段取出后的默认时间格式 'datetime_format' => 'Y-m-d H:i:s', // 是否需要进行SQL性能分析 'sql_explain' => false, ];
設定好之後先放著,先建立一個控制器
在預設下載的集合中,application資料夾裡有一個index的資料夾。
裡面是用來存放控制器,類別和模板的資料夾,名字可以修改。
如果用過3.2的就很好理解了,就是相當於原來的home檔。
在這個資料夾裡先創建三個資料夾
然後再controller資料夾裡新建一個index.php的檔案(其實預設就有一個)。
在class類別裡寫入這樣的程式碼
public function indexs() { return '我打开控制器了'; }
在網址列輸入伺服器名稱/index/index/indexs
可以看見一行文字。
加下來先引入模板。
先加入use think\View;引入模板庫。
$view = new View; return $view->fetch('模板名');
那麼模板放在哪裡。 controller資料夾有一個view資料夾
如果你直接把模板檔案拖進去的話會報錯。
看報錯路徑的後半部。 /application/index\view\index\adda.html
application/index/view這個都能找到
接下來又是一個資料夾的名字和檔案名稱。
這個資料夾對應的是控制器的名字,也就是說要建立一個對應的資料夾。再把模板拖進去即可呼叫。當然,一個完整的框架不會只有這一個方法。其他的細節以後在研究。
表單提交的常用的兩個寫法,input('post.xxx')指的是取得post值。
//调用Db类 use think\Db; $data = ['title' => input('post.title'), 'content' => input('post.title')]; Db::table('blogmsg')->insert($data); //建立model的写法 $mod = new \app\index\model\Blogmsg; $mod->title = input('post.title'); $mod->content = input('post.content'); $mod->save(); echo $mod->id;
相對而言,個人比較喜歡這樣的寫法。使用Request來完成新增。 (對以後使用laravel有好處)
//引入Request。 use think\Request; public function add(Request $req){ //如果添加的内容需要处理,先单独取出然后赋值进去($req->post('title')可以获取其中的值) $a = rtrim($req->post('title'),' '); $req->post(['title'=>$a]); //准备添加 $mod = new \app\index\model\Blogmsg; //allowField可以选择只添加哪些字段。 $mod->allowField(['title','content'])->save($req->post()); //获取返回的主键 echo $mod->id; }
說道添加數據,那麼肯定需要自動驗證了。
這次的自動驗證可以單獨的寫一個檔案。在index資料夾內建立一個Validate資料夾,內部建立一個和Model資料夾內相同名字的php檔案。方便使用。
樣本
namespace app\index\validate; use think\Validate; class Blogmsg extends Validate { //写规则 protected $rule = [ 'title' => 'require|max:25', 'content' => 'require|max:255', ]; //写报错返回信息 protected $message = [ 'title.require' => '必须填写', 'title.max' => '不能超过25个字符', 'content.require' => '必须填写', 'content.max' => '不能超过255个字符', ]; protected $scene = [ 'add' => ['title','content'], 'edit' => ['title','content'], ]; }
然後控制器部分的改變
$a = $mod->validate(true)->allowField(['title','content'])->save($req->post()); if(false === $a){ // 验证失败 输出错误信息 dump($mod->getError()); die; }
最後做一個防止重複提交以及遠端提交的表單令牌功能:在範本中的form表單裡加入{:token()},然後再驗證的規則裡做一下修改,驗證規則加上一個token。如下:
'title' => 'require|max:25|token',
至此,文章新增部分告一段落。
以上是thinkphp5中資料庫新增內容的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!