摘要:與關(guān)聯(lián)的表單中常規(guī)的表單,基于創(chuàng)建的表單類,需要一個(gè)繼承自的類,比如有一個(gè)保證金初始化表單,可能需要一個(gè)保證表單類保證金初始化在初始化表單的視圖中,我們需要?jiǎng)?chuàng)建關(guān)聯(lián)的表單。
與Model關(guān)聯(lián)的ActiveForm表單
yii2中常規(guī)的表單,基于yiiootstrapActiveForm創(chuàng)建的表單類,需要一個(gè)繼承自yiiaseModel的ModelForm類,比如有一個(gè)保證金初始化表單,可能需要一個(gè)保證表單類(DepositInitForm):
modelnamespace backendmodels; use Yii; use yiiaseModel; /** * Login form * 保證金初始化 */ class DepositInitForm extends Model { public $type; public $id; public $uid; /** * @inheritdoc */ public function rules() { return [ [["type", "id", "uid"], "safe"], [["id"], "required"], ]; } }
在初始化表單的view視圖中,我們需要?jiǎng)?chuàng)建關(guān)聯(lián)的表單。關(guān)聯(lián)表單的幾個(gè)好處:
表單的驗(yàn)證
表單在修改的時(shí)候自動(dòng)填充
減少代碼量
bootstrap提供的自適應(yīng)特性
view在init.php視圖中我們可以這樣創(chuàng)建表單:
"deposit-init-form", "layout" => "inline", "method" => "post", "action" => Url::to("deposit/init")]); echo $form->field($model, "type")->dropDownList(["0" => "選擇拍賣類型", "1" => "拍場", "2" => "拍品"]); echo $form->field($model, "id")->textarea(["placeholder" => "請輸入拍場id或者拍品id"]); // 此處用了hidden表單,以后擴(kuò)展根據(jù)用戶uid查詢 echo $form->field($model, "uid")->textarea(["placeholder" => "請輸入添加白名單用戶id,多個(gè)用逗號分隔"]); echo Html::button("初始化", ["class" => "btn btn-danger init"]); echo Html::button("查詢", ["class" => "btn btn-default query"]) ?> ActiveForm::end(); ?>controller
在DespositController控制器中可以這樣寫:
/** * 白名單,保證金 */ public function actionInit(){ $model = new ackendmodelsDepositInitForm; $model->type = 1; // 下拉列表默認(rèn)選中設(shè)置 if ($model->load(Yii::$app->request->post()) && $model->validate()) { // TODO 處理業(yè)務(wù)邏輯 ... } return $this->render("init",["model" => $model]); }基于Html幫助類創(chuàng)建表單
有時(shí)候,我們并不想關(guān)聯(lián)一個(gè)model,比如我們需要調(diào)用rest服務(wù)的時(shí)候,我們只是想把表單的數(shù)據(jù)提交到一個(gè)url請求去,此時(shí),我們可以選擇yiihelpersHtml幫助類,創(chuàng)建一個(gè)簡單的表單:
view"page-conversion-form", "class" => "form-inline", "role" => "form"]); ?>"所有訂單", "1" => "普通訂單", "2" => "拍賣訂單"], ["class" => "form-control"]); ?>"btn btn-default"]); echo Html::endForm(); // ... ?>
這里寫了一個(gè)簡單的根據(jù)訂單類型統(tǒng)計(jì)轉(zhuǎn)化率的表單,該表單并不復(fù)雜,只有一個(gè)下拉列表,所以沒必要?jiǎng)?chuàng)建一個(gè)表單,再者,沒必要對type做校驗(yàn),如果沒有傳遞該參數(shù),控制器中作默認(rèn)為0的處理。
controller在StatisticsController控制器中,創(chuàng)建actionConversionRate操作:
public function actionConversionRate() { $query["page"] = isset($_GET["page"]) ? intval($_GET["page"]) : 1; $query["perpage"] = isset($_GET["per-page"]) && $_GET["per-page"] ? $_GET["per-page"] : 15; // type不傳遞的時(shí)候,默認(rèn)為0,為了在頁面顯示選擇類型,并將其傳遞到view做視圖的渲染 $query["type"] = isset($_GET["type"]) ? intval($_GET["type"]) : 0; $api = rtrim(Yii::$app->params["statisticsUrl"], "/") . "/statistics/"; $url = $api . "getConversionRate?" . http_build_query($query); $data = AppHelper::getData($url); $count = AppHelper::getData($api . "getRateCount?type=" . $query["type"]); // 這里面的是一個(gè)數(shù)據(jù)提供器,先不關(guān)心 $dataProvider = new ackendextensionsArrayDataProvider( [ "allModels" => $data, "totalCount" => $count, "key" => "ltime", "sort" => [ "attributes" => [ "ltime", ], "defaultOrder" => [ "ltime" => SORT_DESC, ], ], "pagination" => [ "pageSize" => 15, ], ] ); return $this->render("conversionrate", ["dataProvider" => $dataProvider, "type" => $query["type"]]); }純手工寫表單
純手工寫html表單,我相信你會的。我就不寫了。
最后,關(guān)于ActiveForm和Html的api參看Yii2官網(wǎng)或者中文網(wǎng)站。文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21706.html
摘要:在中最常用的幾種回調(diào)寫法如下匿名函數(shù)做為回調(diào)匿名函數(shù),也叫閉包函數(shù),允許臨時(shí)創(chuàng)建一個(gè)沒有指定名稱的函數(shù)。最經(jīng)常用作回調(diào)函數(shù)參數(shù)的值。匿名函數(shù)的回調(diào)經(jīng)常將其賦給一個(gè)變量或一個(gè)對象的屬性最終結(jié)果會輸出。 在workerman中會經(jīng)常使用,我們先寫一個(gè)回調(diào)函數(shù),當(dāng)某個(gè)行為被觸發(fā)后使用該函數(shù)處理相關(guān)邏輯。 在PHP中最常用的幾種回調(diào)寫法如下 匿名函數(shù)做為回調(diào) 匿名函數(shù)(Anonymous fu...
摘要:好比注冊功能模塊,手機(jī)號郵箱注冊這些,肯定是要驗(yàn)證其的唯一性的,重復(fù)了登錄就會混亂。需求分析使用框架自帶的在不刷新頁面的情況下驗(yàn)證手機(jī)號郵箱唯一性。相關(guān)資料表單驗(yàn)證問題注冊時(shí)驗(yàn)證手機(jī)號唯一 序言 驗(yàn)證唯一性很重要,說不上用得很普及,但是也必須要有。好比注冊功能模塊,手機(jī)號、郵箱注冊這些,肯定是要驗(yàn)證其的唯一性的,重復(fù)了登錄就會混亂。那么如何使用Yii2自帶的targetClass驗(yàn)證唯...
摘要:好比注冊功能模塊,手機(jī)號郵箱注冊這些,肯定是要驗(yàn)證其的唯一性的,重復(fù)了登錄就會混亂。需求分析使用框架自帶的在不刷新頁面的情況下驗(yàn)證手機(jī)號郵箱唯一性。相關(guān)資料表單驗(yàn)證問題注冊時(shí)驗(yàn)證手機(jī)號唯一 序言 驗(yàn)證唯一性很重要,說不上用得很普及,但是也必須要有。好比注冊功能模塊,手機(jī)號、郵箱注冊這些,肯定是要驗(yàn)證其的唯一性的,重復(fù)了登錄就會混亂。那么如何使用Yii2自帶的targetClass驗(yàn)證唯...
摘要:而且很明顯地,我們可以看到,一旦輸入框在失去焦點(diǎn)的時(shí)候,如果里面沒有輸入任何內(nèi)容,每個(gè)輸入框就會有相應(yīng)的錯(cuò)誤提示,用戶體驗(yàn)很不錯(cuò)。 原文來自: https://jellybool.com/post/programming-with-yii2-exploring-mvc-forms-a... 上一篇文章我們簡單地實(shí)現(xiàn)了Yii2框架安裝和Hello World,而在這一篇文章當(dāng)中...
閱讀 2816·2021-11-24 09:39
閱讀 1671·2021-09-28 09:35
閱讀 1148·2021-09-06 15:02
閱讀 1364·2021-07-25 21:37
閱讀 2797·2019-08-30 15:53
閱讀 3675·2019-08-30 14:07
閱讀 735·2019-08-30 11:07
閱讀 3553·2019-08-29 18:36