您當前位置>首頁 » 新聞資(zī)訊 » 小程序相關(guān) >
小北微信小程序之--新建和(hé)編輯相冊(小程序的表單提交)
發表時間:2022-9-14
發布人:葵宇科技
浏覽次數:40
之前相冊的數據都是我們使用種子(zǐ)腳本模拟出來的,本節我們嘗試從小程序端直接提交數據到yii2服務器(qì)。
在本節我們要學習到如(rú)下(xià)知識
- 小程序的form功能
- yii2中(zhōng)restful的create和(hé)update方法的使用
這一次我們依然從服務端開始
服務器(qì)端
我們知道使用GET /xcx/albums 是觸發了index這個(gè)action,那麼create和(hé)update那?也是有的,當我們對接口發起POST /xcx/albums代表create,同理PUT /xcx/albums/xxx 代表update。
我們先來說create
簡單嘗試一下(xià),如(rú)下(xià)圖,我先給yii2模拟一個(gè)post請求看看是否會有新數據
很不錯,在我沒有對服務器(qì)代碼進行任何改動(dòng)的情況下(xià)已經成功插入了數據
當然這面臨着1個(gè)問(wèn)題,就是對于album表記錄,created_at和(hé)updated_at并沒有賦值,關(guān)于它們方法有很多,比如(rú)前台傳入時間戳、後台對create action進行重寫,當然還有一種方法也是我們即将采用的方法,那就是使用yii2的TimestampBehavior行為類,它将作用于模型Album,如(rú)下(xià)圖
設置完以後我們再測試下(xià)
起作用了
小提示:yii2的行為是一門比較大的教程,我們幹貨區也有講解,可(kě)以從http://nai8.me/sapper-index.h... 鍊接進入,共14篇文(wén)章。
現在我們已經知道了create接口如(rú)何玩,接下(xià)來看看update,在yii2的restful中(zhōng)如(rú)果對一個(gè)已經存在的記錄進行更新需要如(rú)下(xià)規則 PUT /xcx/albums/xxx 其中(zhōng)xxx代表這個(gè)記錄的ID,比如(rú)PUT /xcx/albums/6 就是要更改id=6的相冊,其中(zhōng)form部分就是更新的内容,我們來模拟一個(gè)記錄。
果然,數據庫被修改了。
以上就是create和(hé)update接口,現在服務器(qì)端我們都知道如(rú)何做了,接下(xià)來就是小程序的部署。
小程序
在小程序端我們計劃增加一個(gè)新建按鈕,點擊後跳轉到一個(gè)頁面完成相冊新建功能,因此我對相冊列表頁面做了如(rú)下(xià)配置
小提示:關(guān)于樣式的問(wèn)題大家可(kě)以參考項目中(zhōng)的list.wxss文(wén)件,這裡就不做講解。
我設計了一個(gè)相冊表單提交頁面,如(rú)下(xià)圖
這裡面有幾點要說的
表單form
首先是在小程序中(zhōng)form的用法,它有固定的步驟及能攜帶的組件數據(switch、input、checkbox、slider、radio、picker)
- 将含有能提交數據的組件用form包起來并至少(shǎo)要指定bindsubmit="abc",這代表表單提交後有對應js中(zhōng)的abc()方法進行接收。
- 在表單中(zhōng)需要有一個(gè)button用來點擊提交它,且規定這個(gè)button的formType必須為submit
滿足以上兩個(gè)條件後,基本的表單提交就可(kě)以完成。
小提醒:在js端接收form裡各組件數據的方法和(hé)html很像,是根據wxml内各組件的name屬性獲取的。
我們在add.js中(zhōng)定義一個(gè)formSubmit方法用于接收表單數據。
這個(gè)方法有一些要說的,今後你(nǐ)也會經常用到。
- 1 上面我們說定義了表單内每個(gè)組件的name,在js函數内,我們可(kě)以通(tōng)過e.detail.value.name來獲取對應的值。
- 2 因為我們要提交一個(gè)數據,因此method必須為POST,如(rú)果是更新則為PUT
- 3 在這裡我告訴小程序本次請求發送的data格式為json
ok,開始提交~
0.1秒過去了,OMG失敗了~~~~
根據yii2的響應說明兩點
- 數據的驗證失敗
- name不能為空
這說明了一點就是yii2并沒有識别出我們傳遞過去的name=2,這是為什麼那?
還記得我們是什麼格式傳遞的麼?json
對,在這裡你(nǐ)要注意
小提示:默認情況下(xià)yii2的restful隻能解析application/x-www-form-urlencoded 和(hé) multipart/form-data類型的請求内容。
那麼第一種方法是不要傳遞json類型的數據,但是我想将小程序的所有請求和(hé)響應都用json,因此我必須去配置yii2讓其能解析json類型請求。
打開你(nǐ)的web.php,找到request組件配置,增加一個(gè)解析器(qì),如(rú)下(xià)圖
現在再實驗一下(xià)
哈哈哈,成功了。
總結
上面的教程讓我們完成了一次數據的提交,我們總結下(xià)
- 小程序有自己的form,和(hé)我們使用html+js提交表單差不多
- yii2的restful默認不支持json類型的請求内容,但是可(kě)以配置
- 對于yii2的restful,POST新數據成功後會返回這條記錄。
關(guān)于更新操作
因為更新操作和(hé)新建操作的高度重合性,本篇我們不再做講解,代碼中(zhōng)會實現,大家可(kě)以去github拉下(xià)來看下(xià) https://github.com/abei2017/xgh
下(xià)一篇
到現在我們已經有了相冊,下(xià)一篇我們将講解為某一個(gè)相冊傳圖片的實現,你(nǐ)也将學到如(rú)何使用小程序選擇/拍攝照片以及上傳到服務器(qì)等等。