跳轉到內容

ERP5 手冊/從表單到 API

來自華夏公益教科書,開放世界開放書籍

從表單到 API - 首次深入瞭解

[編輯 | 編輯原始碼]

表單的管理介面

[編輯 | 編輯原始碼]

當您檢視 ERP5 螢幕時,您看到的是一個渲染的表單(ERP5 表單,基於 Formulator 表單)。它的名稱通常位於 URL 的末尾(如 "Person_viewCareer");通常,URL 以 "/view" 結尾,這意味著您正在檢視物件的預設表單。如果您看到多個選項卡(如“檢視 / 詳細資訊 / 職業”,點選其中任何一個,您將在 URL 中看到表單名稱。如果您在一個模組中並且沒有選項卡,事情會稍微複雜一些,我們稍後會討論。

找到表單名稱後,在後面新增 "/manage_main" - 現在您進入管理螢幕,您將看到一個完整的欄位列表,這些欄位在表單中可見(可能還有一些不可見的)。

我們不會詳細討論編輯表單 - 您可以在 Formulator 文件中找到相關資訊。這裡的目的是展示欄位如何填充值以及它們如何與物件互動。

屬性欄位和 API

[編輯 | 編輯原始碼]

簡單欄位 - 包含字串、數字或具有布林值的複選框的欄位,透過命名約定繫結到物件屬性。當渲染一個欄位時,它會呼叫一個適當的訪問器來獲取屬性值。這就是為什麼所有控制元件都以 "my_" 開頭 - 一個欄位

my_title

呼叫一個方法

.getTitle

來獲取屬性的值

title

大多數訪問器是自動生成的(請參閱“ERP5 的魔力”瞭解更多資訊) - 如果定義了一個名為 "title" 的屬性,物件將擁有訪問器,但您在程式碼中找不到它 (!)。有時訪問器會被覆蓋 - 例如,一個 Person 物件具有不同的 .getTitle 方法。您可以在程式碼中找到這個方法。

當一個表單提交,並且您修改了 "title" 欄位的值時,表單呼叫的指令碼(通常為 "Base_edit")會呼叫一個設定器

.setTitle

它,毫不奇怪,設定了標題。將 form_name/manage_main 替換為 "/Base_viewDict" - 您將看到物件的原始資料,並且您將找到您的標題。

幾乎就這些了。有許多針對不同型別屬性的特殊欄位 - 有 StringField、TextAreaField、IntField、FloatField、DateField、EmailField。這些欄位會檢查您輸入的值是否合適。

關係欄位和 API

[編輯 | 編輯原始碼]

關係欄位(更具體地說,RelationStringField)已經在 UI 部分進行了描述。基本上,它遵循與屬性欄位相同的原則。區別在於,在大多數情況下,用於關係的 RelationStringField

source

被稱為

my_source_title

所以它會呼叫訪問器

.getSourceTitle

結果是它會顯示相關物件的漂亮標題,而不是它的相對 URL(如 "/organisation_module/12")。反過來,當您填寫並提交表單時,它會使用標題來搜尋適當的物件。

您也可以應用相同的約定來使用除標題之外的其他屬性,例如,您可以建立一個欄位

my_source_relative_url

它將顯示和使用相關物件的相對 URL。

還有一個 MultiRelationStringField,用於獲取/設定與多個物件的關聯

my_destination_title_list

使用

.getDestinationTitleList

並且具有有趣的行為,將在其他地方解釋。

類別成員欄位和 API

[編輯 | 編輯原始碼]

一些欄位允許您將物件分配到特定類別(換句話說,使用類別進行分類)。例如,您可以在產品上設定 product_line,或在人身上設定國籍。為此,使用 ListField。它遵循相同的原則

my_nationality

允許您選擇國籍,並且它將此人分配到 "nationality" 基礎類別的選定子類別中。

使用值填充此類控制元件的方法是為其提供一個包含類別標題和 URL 的元組列表,例如

'', '', ['German', 'd'], ['British', 'en']...

這可以透過類別的 API 最輕鬆地實現;最常用的方法是

.getCategoryChildLogicalPathItemList
and
getCategoryChildCompactLogicalPathItemList

後者與前者的不同之處在於,如果由標題組成的路徑變得太長,它會嘗試以合理的方式對其進行修剪。

MultiListField 的工作方式相同,只是它允許選擇多個類別(透過 Ctrl-單擊),並且顯然會使用

.get[category]List

訪問器。

列表框中的類別樹

[編輯 | 編輯原始碼]
華夏公益教科書