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

資訊專欄INFORMATION COLUMN

Yii2 驗(yàn)證手機(jī)號(hào)、郵箱唯一性

FuisonDesign / 487人閱讀

摘要:好比注冊(cè)功能模塊,手機(jī)號(hào)郵箱注冊(cè)這些,肯定是要驗(yàn)證其的唯一性的,重復(fù)了登錄就會(huì)混亂。需求分析使用框架自帶的在不刷新頁(yè)面的情況下驗(yàn)證手機(jī)號(hào)郵箱唯一性。相關(guān)資料表單驗(yàn)證問(wèn)題注冊(cè)時(shí)驗(yàn)證手機(jī)號(hào)唯一

序言

驗(yàn)證唯一性很重要,說(shuō)不上用得很普及,但是也必須要有。好比注冊(cè)功能模塊,手機(jī)號(hào)、郵箱注冊(cè)這些,肯定是要驗(yàn)證其的唯一性的,重復(fù)了登錄就會(huì)混亂。那么如何使用Yii2自帶的targetClass驗(yàn)證唯一性呢?使頁(yè)面刷新的可能很多人都會(huì),要是不刷新頁(yè)面直接觸發(fā)targetClass驗(yàn)證的應(yīng)該就少些了吧!不會(huì)的也不必苦惱,不必?fù)?dān)心,因?yàn)槲覍戇@篇文章的目的就是要告訴你怎么通過(guò)頁(yè)面不刷新的方式直接觸發(fā)targetClass驗(yàn)證其手機(jī)號(hào)、郵箱唯一性。

需求分析

1、使用Yii2框架自帶的targetClass在不刷新頁(yè)面的情況下驗(yàn)證手機(jī)號(hào)、郵箱唯一性。

效果圖

這是點(diǎn)擊下一步的時(shí)候在頁(yè)面沒(méi)刷新的情況下出現(xiàn)的驗(yàn)證提示“手機(jī)號(hào)已經(jīng)注冊(cè)”。

代碼分析

1、配置model,我以注冊(cè)SignupFrom 的model為例,rules里的代碼如下:

 public function rules()
    {
         return [
            ["t_mobile", "filter", "filter" => "trim"],
            ["t_mobile", "required"],
             //targetClass 不會(huì)自己調(diào)用Ajax驗(yàn)證,提交表單后才會(huì)觸發(fā)
            ["t_mobile", "unique", "targetClass" => "loginmodelsUser", "message" => "手機(jī)號(hào)已經(jīng)注冊(cè)。"],
            [["t_mobile"],"match","pattern"=>"/^[1][358][0-9]{9}$/"],
            
            ["t_password","required"],
            ["t_re_password","required"],
            ["t_re_password","compare","compareAttribute"=>"t_password","message"=>"兩次密碼輸入不一致。"],
            ["t_password", "string", "min" => 6],
            ["t_re_password", "string", "min" => 6],
            ["company_id", "trim"],
            ["t_realname", "trim"],
            ["company_id", "required"],
            ["t_realname", "required"],
            ["company_id", "string", "min" => 2, "max" => 255],
            ["t_realname", "string", "min" => 2, "max" => 255], 
            ["code", "required"],
            
            //驗(yàn)證碼驗(yàn)證,model自定義驗(yàn)證的寫法,也分享給大家了
            ["code", function ($attribute, $params) { 
                $cd=SmsCode::find()->where(["mobile"=>$this->t_mobile,"code"=>$this->$attribute])->one();
                if(!empty($cd->code) && (strtolower($this->$attribute) == strtolower($cd->code))){
                    return true;
                }else{  
                    $this->addError("code","驗(yàn)證碼錯(cuò)誤。");
                }
            }],

        ];
    }

注釋:郵箱和手機(jī)號(hào)的寫法是一樣的,區(qū)別是pattern的驗(yàn)證規(guī)則,如是郵箱驗(yàn)證就換成郵箱的正則匹配符。
2、在Controller里加上如下一段Ajax提交表單驗(yàn)證的代碼

       //Ajax表單驗(yàn)證
       if((Yii::$app->request->isAjax && $model->load($post))){

            Yii::$app->response->format=Response::FORMAT_JSON;
            return ActiveForm::validate($model);
        } 

注意:這段代碼要放在控制器注冊(cè)方法的最前面,原因很簡(jiǎn)單,不可能你所有的操作都完成了再去走驗(yàn)證吧?
3、View層的Ajax驗(yàn)證觸發(fā)配置
from表單代碼如下:

  "signup?id=reg",
                    "id" => "login-form",
                    "validateOnBlur"=>false,//關(guān)閉失去焦點(diǎn)驗(yàn)證
                    "enableAjaxValidation"=>true, //開(kāi)啟Ajax驗(yàn)證
                    "enableClientValidation"=>false //關(guān)閉客戶端驗(yàn)證
 ]); ?>
    

設(shè)置用戶名

Enter any username and password.
field($model, "t_mobile",["inputOptions"=>["class"=>"form-control form-control-solid placeholder-no-fix","placeholder"=>"手機(jī)號(hào)"]])->label("") ?>
"btn blue uppercase", "name" => "login-button","id"=>"next"]) ?> "forget-password"]) ?>

注釋:(1)、enableAjaxValidation和enableClientValidation的配置必須是enableAjaxValidation為true,enableClientValidation為false。除此之外id也必須要有。
(2)、上面的點(diǎn)擊下一步按鈕我使用Button,原因是我的注冊(cè)功能不是一步走完的,需要好幾步,好幾個(gè)頁(yè)面才能完成注冊(cè),要實(shí)現(xiàn)全部無(wú)刷新,不能直接使用submitButton提交表單,得自己寫Ajax提交。但是如果你們做的注冊(cè)功能是一個(gè)頁(yè)面實(shí)現(xiàn)的話,那就可以直接用submitButton提交表單了。以上的配置Ajax驗(yàn)證已經(jīng)生效,提交表單頁(yè)面不刷新的情況下也能直接觸發(fā)targetClass驗(yàn)證,不必?fù)?dān)心驗(yàn)證唯一性的時(shí)候頁(yè)面會(huì)刷新了。

常見(jiàn)問(wèn)題

1、只model里配置targetClass唯一性驗(yàn)證,在View層開(kāi)啟enableAjaxValidation和關(guān)閉enableClientValidation驗(yàn)證,沒(méi)有在Controller里邊加上文章中我所說(shuō)的Ajax提交表單驗(yàn)證的代碼,導(dǎo)致Ajax驗(yàn)證不成功。那段代碼必須要加的。

相關(guān)資料

1、YII2表單驗(yàn)證問(wèn)題:注冊(cè)時(shí)ajax驗(yàn)證手機(jī)號(hào)唯一 :http://www.yiichina.com/question/241

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21616.html

相關(guān)文章

  • Yii2 驗(yàn)證機(jī)號(hào)、郵箱一性

    摘要:好比注冊(cè)功能模塊,手機(jī)號(hào)郵箱注冊(cè)這些,肯定是要驗(yàn)證其的唯一性的,重復(fù)了登錄就會(huì)混亂。需求分析使用框架自帶的在不刷新頁(yè)面的情況下驗(yàn)證手機(jī)號(hào)郵箱唯一性。相關(guān)資料表單驗(yàn)證問(wèn)題注冊(cè)時(shí)驗(yàn)證手機(jī)號(hào)唯一 序言 驗(yàn)證唯一性很重要,說(shuō)不上用得很普及,但是也必須要有。好比注冊(cè)功能模塊,手機(jī)號(hào)、郵箱注冊(cè)這些,肯定是要驗(yàn)證其的唯一性的,重復(fù)了登錄就會(huì)混亂。那么如何使用Yii2自帶的targetClass驗(yàn)證唯...

    spacewander 評(píng)論0 收藏0
  • Yii2 rules常用規(guī)則

    摘要:必須值驗(yàn)證屬性字段名必填值提示信息說(shuō)明的別名確保了特性不為空郵箱驗(yàn)證說(shuō)明的別名確保了特性的值是一個(gè)有效的電郵地址正則驗(yàn)證字段名正則表達(dá)式提示信息字段名正則表達(dá)式提示信息正則取反說(shuō)明的別名確保了特性匹配一個(gè)正則表達(dá)式網(wǎng)址說(shuō)明的別名確保了特性是 required : 必須值驗(yàn)證屬性 [[字段名],required,requiredValue=>必填值,message=>提示信息]; #說(shuō)明...

    Darkgel 評(píng)論0 收藏0
  • Yii2系列教程四:實(shí)現(xiàn)用戶注冊(cè),驗(yàn)證,登錄

    摘要:開(kāi)始使用郵箱配置好了之后,我們就可以開(kāi)始使用了,首先我們來(lái)修改一下我們的導(dǎo)航欄,因?yàn)槲覀兿雽?shí)現(xiàn)的就是我們常??吹降脑趯?dǎo)航欄的右側(cè)的注冊(cè)和登錄按鈕。 原文來(lái)自: https://jellybool.com/post/programming-with-yii2-integrating-user-regi... 本來(lái)打算昨晚寫的這篇教程,但是忙著約會(huì)去了,所以現(xiàn)在補(bǔ)上吧。 上一篇...

    boredream 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<