小北微信小程序之--新建和(hé)編輯相冊(小程序的表單提交) - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

小北微信小程序之--新建和(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ì)等等。

相關(guān)案例查看更多