subform子表单表单字段类型提供了一种在另一个表单中使用 XML 表单或在现有表单中重用表单的方法.如果属性 multiple 设置为 true,则包含的表单将是可重复的。

表现形式


字段配置参数


专属属性:

  • 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(注意,这里是大小写敏感的!),只有这样,子表单中的字段才会被校验。默认情况下,子表单的字段是不会被校验的,即便你指定了校验规则也是无效的。

通用属性:

  • 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="默认系统自动生成" 
		label="选项值" 
		description="一般供开发者传递参数使用,普通用户保持默认即可" 
	/>
</form>

除了单独使用单独的XML文件来定子表单,也可以使用内联的方式来定义。上面的表单可以简化在一个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="默认系统自动生成" 
						label="选项值" 
						description="一般供开发者传递参数使用,普通用户保持默认即可" 
					/>
				</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的一栏来输出。