定製操作類型和字段
對象接口通過繼承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
來設置。