zoukankan      html  css  js  c++  java
  • CakePHP 1.2 Model 資料驗証 (Data Validation) 簡介

    Data Validation 是 Model 中最重要的功能,也是最重要的程式區塊。當要對資料庫進行Insert, Update時,都會執行這個區塊要設定來檢查資料是否正確。一般而言,寫網站程式會在對資料庫存取(不管是select, insert, update)都會先對資料做初步的檢查(例如:不能是空或空白字串;一定要數字;符合某種格式 - regex 檢查)。CakePHP在方面的設計,比1.1增強許多,在1.1的版本,只有Regex檢查,到了1.2可以針對單一個欄位做多種規則的檢查,也可以自訂函式來做驗証。CakePHP內建的規則可以查 your_cakephp1.2/cake/libs/validation.php

    CakePHP的資料驗証設定很彈性,因此在設定上的寫法花樣很多,以下只例舉我常用的做法:


    public $validate = array(
    "account" => array(
    /* 檢查是不是數字與英文字母的組合 */
    "alphanumberic" => array(
    "rule" => "alphaNumeric",
    "message" => "只能是數字或英文字母",
    "last" => true 
    ), /* end alpha-numeric */
    /* 檢查字串的長度在4~20之間 */
    "length" => array(
    "rule" => array("between", 4, 20),
    "message" => "您的帳號長度不正確,只能 4~20字元",
    "last" => true
    ), /* end length */
    /* 檢查是不是唯一值 (自訂函式) */
    "unique" => array(
    "rule" => array("checkUnique", "account"),
    "message" => "這個帳號已經註冊,請重新取一個",
    "on" => "create"
    ) /* end unique */
    ),/* end for account */

    }


    資料驗証的使用方式是 "自訂的規則名稱" => array("rule" => "內建或自訂的規則", "message"=>"發生錯誤時,要顯示的訊息"),其中 "rule" => "內建或自訂的規則" ,如果使用的規則是Regex或者沒有額外參數的函式(像alphaNumeric,只要傳值去做驗証即可,不需要其他額外的參數),那就可以以字串的方式設定。相反的,如果規則是函式,且需要額外的參數時(像 between, 需要有最大、最小值),那就要以array的方式設定。


    以下是其他參數的說明:


    on: 值有"create"和"update",如果值是"create",意思是指在做insert時,才會使用這個驗証規則,同理是"update"時,只有在update資料庫時,才會使用。如果都不做設定的話,不論是要做insert或update,只要Controller有把這個欄位的值傳進來,就會使用這個規則做驗証。


    last: 設定成 true 時(CakePHP預設值是false),是告知CakePHP只要這個規則沒通過時,就不要再執行同欄位的其他規則。



    自訂函式說明:

    以下是程式碼是截自CakePHP官網的說明,請見 http://book.cakephp.org/view/125/data-validation


    function checkUnique($data, $fieldName) {
    $valid = false;
    if(isset($fieldName) && $this->hasField($fieldName))
    {
    $valid = $this->isUnique(array($fieldName => $data));
    }
    return $valid;
    }


    在寫自訂的函式時,請注意,第一個參數要保留給CakePHP把欄位的值傳進來,從第二個參數開始才是自訂的參數。像上面的checkUnique,$data是指傳進來的欄位值,$fieldName是指要檢查的欄位名稱。



    參考資料:

    http://book.cakephp.org/view/125/data-validation


    原文:http://otaku.kigi.tw/2008/03/cakephp-12-model-data-validation.html

  • 相关阅读:
    磁盘缓存
    算法与追MM(转)
    人人都能上清华(转)
    软件加密技术和注册机制原理攻略(转)
    计算二重定积分
    C++运算符重载
    STL中list的用法
    累了??放松一下,看几张关于程序员的几张搞笑图片
    解决来QQ消息后歌曲音量降低问题
    搞ACM的你伤不起(转)
  • 原文地址:https://www.cnblogs.com/derrck/p/1456586.html
Copyright © 2011-2022 走看看