php怎么弄自动填充,ThinkPHP 自动填充(自动完成)详解及实例
ThinkPHP 自動填充
ThinkPHP 內置了數據對象的自動填充功能,可以用來處理默認值、數據過濾以及其他系統寫入字段的自動處理。
要使用自動填充功能,只需要在對應的 Model類 里面定義 $_auto 屬性(由多個驗證因子組成的數組)。$_auto 屬性是由多個填充因子組成的數組,語法格式如下:
protected $_auto = array(
array(填充字段,填充內容[,填充條件][,附加規則])
};
ThinkPHP自動填充格式說明:
填充因子
說明
填充字段
必須。需要填充的表單字段,這個字段不一定是數據庫字段,也可以是表單的一些輔助字段,例如驗證碼等。
填充內容
必須。要對字段自動填充的內容。
填充條件
可選。包括:
Model:: MODEL_INSERT 或者 1 :新增數據時候填充(默認)
Model:: MODEL_UPDATE 或者 2 :更新數據時候填充
Model:: MODEL_BOTH 或者 3 :全部情況下填充
附加規則
可選。包括:
string:字符串,表示填充內容為字符串(默認)
function:使用函數,表示填充的內容是一個函數返回值
callback:使用方法,表示填充的內容是一個當前 Model 的方法返回值
field:字段,表示填充的內容是一個其他字段的值
自動填充例子
用戶注冊或修改資料時,可能用到的自動填充例子:
class UserModel extends Model{
protected $_auto = array (
// 新增的時候把status字段設置為1
array('status','1'),
// 對password字段在所有情況下使用md5函數處理
array('password','md5',3,'function'),
// 對username字段在新增時回調getName方法
array('username','getName',1,'callback'),
// 對regdate字段在新增時寫入當前時間戳
array('regdate','time',1,'function'),
// 對regip字段在新增時寫入用戶注冊IP地址
array('regip','get_client_ip',1,'function'),
);
}
和自動驗證一樣,自動完成機制需要使用 create 方法才能生效:
$Article = D("User");
if(!$User->create()){
// 如果創建數據對象失敗(可能是驗證未通過等),輸出錯誤提示信息
exit($Article->getError());
}else{
// 繼續下一步流程如將數據寫入數據表
}
提示
與自動驗證不同的是,自動填充無效時(如調用一個不存在的函數或自動填充的字段不存在等)并不導致創建數據對象(create())失敗,只能通過調試或實際數據入庫來檢測自動填充是否正確有效。
動態改變自動完成規則
和自動驗證一樣,可以在操作方法中使用 setProperty方法 動態的更改自動完成的規則:
$Dao = D("User");
$auto = array (
// 僅對password字段進行處理
array('password','md5',1,'function')
);
$User->setProperty("_auto",$auto);
if(!$User->create()){
……
}
M方法中使用自動填充功能
充分利用功能強大的 ThinkPHP 自動填充(自動完成)功能,能夠快捷簡便的構建表單入庫數據,程序結構也會更加明晰。
總結
以上是生活随笔為你收集整理的php怎么弄自动填充,ThinkPHP 自动填充(自动完成)详解及实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 发送cookie_Java如何
- 下一篇: php protected 的继承,14