Joomla 子表單

2023-03-10 11:54 更新

subform子表單表單字段類型提供了一種在另一個表單中使用 XML 表單或在現有表單中重用表單的方法.如果屬性 multiple 設置為 true,則包含的表單將是可重復的。

表現形式

subform.png

字段配置參數

專屬屬性:

  • type (必填) 必須為 subform.
  • formsource(必填) 要包含的表單定義,可以是XML文件的相對路徑(相對于站點的根目錄)或者可通過JForm::getInstance()找到的有效的表單名稱.
  • multiple (選填) (true/false) 是否允許重復
  • min (選填) 當選擇可重復的時候,最小的重復次數。默認為0.
  • max (選填) 當選擇可重復的時候,最大的重復次數。默認為1000.
  • default (選填)  默認值,這里應該是一個JSON字符串
  • groupByFieldset (選填) 是否按照子表單的fieldset進行分組,可選擇true|false。默認為false
  • buttons (選填) 。在多選模式下,需要顯示的按鈕,默認為 add,remove,move
  • layout (選填) 顯示子表單時使用的布局
  • validate (選填) 推薦被設置為SubForm(注意,這里是大小寫敏感的!),只有這樣,子表單中的字段才會被校驗。默認情況下,子表單的字段是不會被校驗的,即便你指定了校驗規(guī)則也是無效的。

通用屬性:

  • name (必填)  能代表該字段的唯一的名稱.
  • label (選填) (支持多語言機制) 字段的標題
  • description (選填) (支持多語言機制) 該字段的描述信息。當鼠標移動到標簽上面的時候,會以tooltip的形式顯示出來.
  • default (選填) (不支持多語言機制) 默認值
  • class (選填) 表單字段的css類名。如果省略,默認為'text_area'.
  • required (選填l)  是否必須填寫內容,用于在提交表單是進行校驗. ( "true", "1", "readonly"這些都表示true)
  • hint 顯示在html占位符元素中的文本,通常是在空白字段內顯示的淺色提示
  • readonly (選填l) 是否只讀,字段的值不能編輯. ("true", "1", "readonly" 這些都表示true)
  • disabled (選填) 是否禁用字段。如果為true,那么這個字段的值不能填寫,只能展示 - 并且這個值不會在表單中提交. (可設置的值: "true", "1", "readonly" 這些都表示true)

使用方法

要使用子表單字段需要有兩個步驟。

第一步定義字段,將字段類型定義為subform,同時指定formsouce.

<field
        name="value"
        type="subform"             
        description="單選框的選項"
         formsource="administrator/components/com_zmaxappbuilder/fieldtype/zmaxradio/option.xml"
        multiple="true"
        label="選項"
        min="2"
        />

 

 第二步定義子表單的XML。也就是 administrator/components/com_zmaxappbuilder/fieldtype/zmaxradio/option.xml的內容如下:

<?xml version="1.0" encoding="utf-8"?>
<form>
    <field
        name="text"
        type="text"
        required="true"
        label="選項文本"
    />
    <field
        name="value"
        type="text"
        hint="默認系統(tǒng)自動生成"
        label="選項值"
        description="一般供開發(fā)者傳遞參數使用,普通用戶保持默認即可"
    />
</form>

除了單獨使用單獨的XML文件來定子表單,也可以使用內聯(lián)的方式來定義。上面的表單可以簡化在一個XML文件中。如下:

<field
                name="value"
                type="subform"             
                description="單選框的選項"
                multiple="true"
                label="選項"
                min="2"
                >
                <form>
                    <field
                        name="text"
                        type="text"
                        required="true"
                        label="選項文本"
                    />
                    <field
                        name="value"
                        type="text"
                        hint="默認系統(tǒng)自動生成"
                        label="選項值"
                        description="一般供開發(fā)者傳遞參數使用,普通用戶保持默認即可"
                    />
                </form>
            </field>

關于布局

subfrom字段有兩個“預定義”布局,用于將子表單顯示為表格或 div 容器,并支持自定義布局。布局的可選值如下:

  • joomla.form.field.subform.default 以div的方式來渲染子表單,不支持重復模式。在單個記錄的時候默認使用這個布局
  • joomla.form.field.subform.repeatable 以div的方式來渲染子表單,支持重復模式。支持groupByFieldset參數
  • joomla.form.field.subform.repeatable-table 以table的方式來渲染子表單,支持重復模式,支持groupByFieldset參數。默認情況下,每一個字段梅擋住table的一欄來輸出。當groupByFieldset=true的時候,此時每一個fieldset被擋住table的一欄來輸出。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號