成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

yii2中表單的幾種寫法

cpupro / 3327人閱讀

摘要:與關(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):

model
namespace 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

相關(guān)文章

  • workerman / 學(xué)習(xí)workerman之前需要知道幾種php回調(diào)寫法

    摘要:在中最常用的幾種回調(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...

    Java_oldboy 評論0 收藏0
  • Yii2 驗(yàn)證手機(jī)號、郵箱唯一性

    摘要:好比注冊功能模塊,手機(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)證唯...

    spacewander 評論0 收藏0
  • Yii2 驗(yàn)證手機(jī)號、郵箱唯一性

    摘要:好比注冊功能模塊,手機(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)證唯...

    FuisonDesign 評論0 收藏0
  • Yii2系列教程二:MVC Forms 和 Layouts

    摘要:而且很明顯地,我們可以看到,一旦輸入框在失去焦點(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)中...

    ThreeWords 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<