6.4 表单元素

描述表单input部分的元素可能是表单对象最重要的部分。它们作为关联数组存储在Solar_Form::$elements属性中。

同样的,$elements属性中的元素是一个描述自身的数组。描述数组的键说明如下:

name

元素的名称,用于表单中元素的name属性。

type

元素类型,与视图辅助类相对应。例如,select使用formSelect辅助类,产生<select />标签。newForm()方法能够根据记录属性的种类为元素选择正确的类型。char和varchar字段对应input类型,使用ValidateInListValidateInKeys过滤器的字段对应select类型,布尔类型字段对应checkbox类型,等等。

label

放置在 <label>标签中的简短的文本,该标签和元素关联。

descr

一段描述元素的叙述性文本;这个属性可用于工具提示、帮助文本等类似方面。

value

元素当前的值。

require

布尔类型,指示元素是否必须非空。newForm()方法能够识别NOT NULL类型的字段,它会默认设置此类元素为非空。

options

一个键-值对数组,数组键是选项值,数组值是选项的标记文本。这常用于selectradio类型元素,因此他们知道该显示哪个选项。

attribs

一个键-值对数组,数组键是一个XHTML属性名,数组值是相应属性的值。

invalid

一个消息数组,用于表示元素值非法的原因。

6.4.1 元素名称

每个元素的名称都对应于$_POST数组中的键(如果你使用GET方法,那么这里就是$_GET数组--通常来说不推荐使用GET方法,但有时候又必须使用它)。元素的名称模仿数组格式,其中数组名匹配某个模型名,键名匹配模型记录的属性。但是,实际上元素的名称仍然是一个字符串;它们仅仅看上去像数组。

例如,给定Acme_Model_Blogs_RecordnewForm()方法返回的表单对象中的元素的名称如下:

<?php
$form->elements['blog[title]']  = array(...); // $_POST['blog']['title']
$form->elements['blog[body]']   = array(...); // $_POST['blog']['body']
$form->elements['blog[status]'] = array(...); // $_POST['blog']['status']
[Note]Note

newForm()方法默认忽略“特殊”字段(primary、created、updated、inherit等)。

这些名称也用于表单中元素的名称:

<input name="blog[title]" ... />
<textarea name="blog[body]">...</textarea>
<select name="blog[status]">...</select>