物件型介面 / 定製操作型別和欄位
物件介面通過繼承AccessControl類來實現,預設允許5個標準物件操作,可以改寫屬性$allowedAc
來限定允許的操作:
class AC_ApiLog extends AccessControl
{
protected $allowedAc = ["get", "query"];
// 預設值為 ["add", "get", "set", "del", "query"]
}
預設get/query操作返回ApiLog的所有欄位,可以用屬性$hiddenFields
隱藏一些欄位,比如不返回"addr"和"tm"欄位:
class AC_ApiLog extends AccessControl
{
protected $hiddenFields = ["addr", "tm"];
}
對於add/set介面,可用$requiredFields
設定必填欄位,用$readonlyFields
設定只讀欄位。
特別地,"id"欄位預設就是隻讀的,無須設定。
示例:實現下面控制邏輯
- "addr"欄位為必填欄位,即在add介面中必須填值,在set介面中不允許置空;
- "tm"欄位為只讀欄位,即在add/set介面中如果填值則忽略(但不報錯);
在add操作中,由程式自動填寫"tm"欄位。
class AC_ApiLog extends AccessControl { protected $requiredFields = ["addr"]; protected $readonlyFields = ["tm"];
// 由add/set介面回撥,用於驗證欄位(Validate),或做自動補全(AutoComplete)工作。 protected function onValidate() { if ($this->ac == "add") { $_POST["tm"] = date(FMT_DT); } }
}
例中使用回撥onValidate來對tm欄位自動填值。 上面用到的常量FMT_DT是框架定義的標準日期格式,常用於格式化日期欄位傳到資料庫。
如果某些欄位是在新增時不是必填,但更新時不可置空,可以用$requiredFields2
來設定;
類似地,新增時可寫,更新時只讀的欄位,用$readonlyFields2
來設定。
相關文章
- mysql表操作(alter)/mysql欄位型別MySql型別
- 保留兩位小數:資料庫欄位型別NUMBER,Java欄位型別Double型別資料庫型別Java
- typescript 介面和物件型別(四)TypeScript物件型別
- sql語句修改欄位型別和增加欄位SQL型別
- [提問交流]建立模型,新增屬性,欄位型別如何設定2位小數的欄位型別模型型別
- Oracle 修改欄位型別和長度Oracle型別
- MongoDB更改欄位型別MongoDB型別
- oracle的欄位型別Oracle型別
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- MySQL欄位型別最全解析MySql型別
- date、timestamp欄位型別型別
- MySQL欄位型別小記MySql型別
- 資料欄位型別匹配型別
- 修改表的欄位型別型別
- sqlite sql 修改欄位型別SQLite型別
- MYSQL SET型別欄位的SQL操作知識介紹MySql型別
- 【mongo】mongo 欄位型別互轉Go型別
- [轉]MySQL 欄位型別參考MySql型別
- MongoDB中的欄位型別IdMongoDB型別
- oracle 修改欄位型別的方法Oracle型別
- 欄位型別檢測指令碼型別指令碼
- 比較所有的欄位型別型別
- 主流資料庫欄位型別轉.Net型別的方法資料庫型別
- 關於mysql中欄位定義的型別int、tinyint區別MySql型別
- varchar or blob:欄位型別的儲存和溢位條件型別
- SqlSugar code first 欄位為列舉型別,預設生成資料庫欄位為bigint如何設定為int型別SqlSugar型別資料庫
- 物件型介面物件
- ES Mapping ,1 欄位型別APP型別
- 修改欄位資料型別的方法資料型別
- LONG欄位型別向CLOB遷移型別
- 細說SQL SERVER中欄位型別SQLServer型別
- MySQL欄位新增註釋,但不改變欄位的型別MySql型別
- MySQL的主鍵和欄位型別問題總結MySql型別
- 在SQL Server中修改欄位型別和欄位名稱的儲存過程SQLServer型別儲存過程
- JavaScript的型別和物件JavaScript型別物件
- 多型關聯自定義的型別欄位的處理多型型別
- Mysql varchar型別欄位為什麼經常定義為255MySql型別
- Sqlserver修改線上表的表欄位型別SQLServer型別