Zend_Dojo-Form-Elements.xml 41 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103
  1. <sect2 id="zend.dojo.form.elements">
  2. <title>Dijit-Specific 表单元素</title>
  3. <para>
  4. 每个被提供视图助手的 dijit 表单都有相应的<code>Zend_Form</code>元素。它们都有下列方法来处理 dijit 参数:
  5. </para>
  6. <itemizedlist>
  7. <listitem><para>
  8. <code>setDijitParam($key, $value)</code>: 设置一单个的 dijit 参数。
  9. 如果 dijit 参数已经存在,则覆盖它。
  10. </para></listitem>
  11. <listitem><para>
  12. <code>setDijitParams(array $params)</code>: 一次设置若干 dijit 参数。
  13. 同样,已经存在的参数被覆盖。
  14. </para></listitem>
  15. <listitem><para>
  16. <code>hasDijitParam($key)</code>: 是否有个给定的 dijit 参数被定义和存在。
  17. </para></listitem>
  18. <listitem><para>
  19. <code>getDijitParam($key)</code>: 获取给定 $key 的 dijit 参数,如果不可用,则返回 null。
  20. </para></listitem>
  21. <listitem><para>
  22. <code>getDijitParams()</code>: 获取所有的 dijit 参数。
  23. </para></listitem>
  24. <listitem><para>
  25. <code>removeDijitParam($key)</code>: 删除给定 $key 的 dijit 参数。
  26. </para></listitem>
  27. <listitem><para>
  28. <code>clearDijitParams()</code>: 清除所有当前定义的 dijit 参数。
  29. </para></listitem>
  30. </itemizedlist>
  31. <para>
  32. Dijit 参数存储在 <code>dijitParams</code> 公共属性里。这样,你可以
  33. 通过设置这个元素的属性来 dijit-enable 一个存在的表单元素。 你将不会有
  34. 上述访问器来简化处理这些参数。
  35. </para>
  36. <para>
  37. 另外,dijit-specific 元素实现一个不同的装饰器列表,相应如下:
  38. </para>
  39. <programlisting role="php"><![CDATA[
  40. $element->addDecorator('DijitElement')
  41. ->addDecorator('Errors')
  42. ->addDecorator('HtmlTag', array('tag' => 'dd'))
  43. ->addDecorator('Label', array('tag' => 'dt'));
  44. ]]></programlisting>
  45. <para>
  46. 实际上,DijitElement 装饰器用来替换标准的 ViewHelper 装饰器。
  47. </para>
  48. <para>
  49. 最后,基本的 Dijit 元素确保在视图中设置 Dojo 视图助手路径。
  50. </para>
  51. <para>
  52. 一个提供 <code>多重</code> 摘要表单元素的功能的 DijitElement 的变量 DijitMulti
  53. 让开发者指定 'multiOptions' - 一般是 select 选项或 radio 选项。
  54. </para>
  55. <para>
  56. 下列 dijit 元素随标准的 Zend Framework 版本发行。
  57. </para>
  58. <sect3 id="zend.dojo.form.elements.button">
  59. <title>按钮</title>
  60. <para>
  61. 虽然不是从 <link linkend="zend.form.standardElements.button">标准 Button 元素</link>中派生,
  62. 它确实实现了相同的功能,并可以随时替换它。展示一下下列函数:
  63. </para>
  64. <itemizedlist>
  65. <listitem><para>
  66. <code>getLabel()</code> 如果没有提供名字,将使用元素名作为按钮标签。另外,
  67. 如果翻译适配器有匹配的翻译信息,它将翻译这个名字。
  68. </para></listitem>
  69. <listitem><para>
  70. <code>isChecked()</code> 确定是否提交的值和标签(label)匹配,如果匹配,返回true。
  71. 这对于当提交表单时确定用了那个按钮很有用。
  72. </para></listitem>
  73. </itemizedlist>
  74. <para>
  75. 另外,只有 <code>DijitElement</code> 和 <code>DtDdWrapper</code> 装饰器用于按钮元素。
  76. </para>
  77. <example id="zend.dojo.form.elements.button.example">
  78. <title> 按钮 dijit 元素用法范例 </title>
  79. <programlisting role="php"><![CDATA[
  80. $form->addElement(
  81. 'Button',
  82. 'foo',
  83. array(
  84. 'label' => 'Button Label',
  85. )
  86. );
  87. ]]></programlisting>
  88. </example>
  89. </sect3>
  90. <sect3 id="zend.dojo.form.elements.checkBox">
  91. <title>检查框</title>
  92. <para>
  93. 虽然不是从 <link linkend="zend.form.standardElements.checkbox"> 标准检查框元素 </link> 里派生,
  94. 但它确实实现了相同的功能。展示一下下列函数:
  95. </para>
  96. <itemizedlist>
  97. <listitem><para>
  98. <code>setCheckedValue($value)</code>: 设置一个值,当元素被选就用这个值。
  99. </para></listitem>
  100. <listitem><para>
  101. <code>getCheckedValue()</code>: 获取当元素被时选使用的值。
  102. </para></listitem>
  103. <listitem><para>
  104. <code>setUncheckedValue($value)</code>: 设置一个值,当元素不被选中就用这个值。
  105. </para></listitem>
  106. <listitem><para>
  107. <code>getUncheckedValue()</code>: 获取当元素不被选中时使用的值。
  108. </para></listitem>
  109. <listitem><para>
  110. <code>setChecked($flag)</code>: 标记元素为选中或未选中。
  111. </para></listitem>
  112. <listitem><para>
  113. <code>isChecked()</code>: 确定元素是否被选中。
  114. </para></listitem>
  115. </itemizedlist>
  116. <example id="zend.dojo.form.elements.checkBox.example">
  117. <title> 检查框 dijit 元素用法范例 </title>
  118. <programlisting role="php"><![CDATA[
  119. $form->addElement(
  120. 'CheckBox',
  121. 'foo',
  122. array(
  123. 'label' => 'A check box',
  124. 'checkedValue' => 'foo',
  125. 'uncheckedValue' => 'bar',
  126. 'checked' => true,
  127. )
  128. );
  129. ]]></programlisting>
  130. </example>
  131. </sect3>
  132. <sect3 id="zend.dojo.form.elements.comboBox">
  133. <title> 组合框(ComboBox)和 FilteringSelect</title>
  134. <para>
  135. 正如在组合框 <link linkend="zend.dojo.view.dijit.form">dijit 视图助手文档 </link> 里的注释,
  136. 组合框是介于选择和文本输入之间的混合体,可以从列表中选择也可以输入内容到列表里。
  137. FilteringSelect 也一样,但不允许任意输入。
  138. </para>
  139. <note>
  140. <title>组合框(ComboBoxes) 返回标签值</title>
  141. <para>
  142. 组合框返回标签值而不是选项值,它可期望导致分离(disconnect)。
  143. 由于这个原因,组合框不自动注册一个 <code>InArray</code> 校验器(而 FilteringSelects 会)。
  144. </para>
  145. </note>
  146. <para>
  147. 组合框和 FilteringSelect 表单元素提供访问器和增变器来检查和设置选择选项和指定 dojo.data 数据存储(如果使用的话)。
  148. 它们从 DijitMulti 继承,允许你通过 <code>setMultiOptions()</code> 和 <code>setMultiOption()</code> 方法指定选择选项。
  149. 另外,下列方法可用:
  150. </para>
  151. <itemizedlist>
  152. <listitem><para>
  153. <code>getStoreInfo()</code>: 获取当前设置的所有数据存储信息,如果没有,返回一个空的数组。
  154. </para></listitem>
  155. <listitem><para>
  156. <code>setStoreId($identifier)</code>: 设置存储标识符变量(在 Dojo 里通常由属性 'jsId' 指定)。
  157. 这个应当是有效的 javascript 变量名。
  158. </para></listitem>
  159. <listitem><para>
  160. <code>getStoreId()</code>: 获取存储标识符变量名。
  161. </para></listitem>
  162. <listitem><para>
  163. <code>setStoreType($dojoType)</code>: 设置数据存储类,例如"dojo.data.ItemFileReadStore"。
  164. </para></listitem>
  165. <listitem><para>
  166. <code>getStoreType()</code>: 获取 dojo 数据存储类。
  167. </para></listitem>
  168. <listitem><para>
  169. <code>setStoreParams(array $params)</code>: 设置任何用于配置数据存储对象的参数。
  170. 例如,dojo.data.ItemFileReadStore 期望一个'url'参数指向一个能返回 dojo.data 对象的位置。
  171. </para></listitem>
  172. <listitem><para>
  173. <code>getStoreParams()</code>: 获取任何当前设置的数据存储参数,如果没有,返回一个空数组。
  174. </para></listitem>
  175. <listitem><para>
  176. <code>setAutocomplete($flag)</code>: 标识当用户离开元素时,是否选择的条目将被使用。
  177. </para></listitem>
  178. <listitem><para>
  179. <code>getAutocomplete()</code>: 获取自动完成标志的值。
  180. </para></listitem>
  181. </itemizedlist>
  182. <para>
  183. 缺省地,如果没有 dojo.data 存储和元素一起注册,该元素就注册
  184. 一个 <code>InArray</code> 校验器,它依靠注册的选项的数组键来校验。
  185. 你可以通过调用 <code>setRegisterInArrayValidator(false)</code> 或
  186. 传递一个 false 值给 <code>registerInArrayValidator</code> 配置键
  187. 来禁止该行为。
  188. </para>
  189. <example id="zend.dojo.form.elements.comboBox.selectExample">
  190. <title> 使用组合框 dijit 元素做选择输入的范例 </title>
  191. <programlisting role="php"><![CDATA[
  192. $form->addElement(
  193. 'ComboBox',
  194. 'foo',
  195. array(
  196. 'label' => 'ComboBox (select)',
  197. 'value' => 'blue',
  198. 'autocomplete' => false,
  199. 'multiOptions' => array(
  200. 'red' => 'Rouge',
  201. 'blue' => 'Bleu',
  202. 'white' => 'Blanc',
  203. 'orange' => 'Orange',
  204. 'black' => 'Noir',
  205. 'green' => 'Vert',
  206. ),
  207. )
  208. );
  209. ]]></programlisting>
  210. </example>
  211. <example id="zend.dojo.form.elements.comboBox.datastoreExample">
  212. <title> 带数据存储的组合框 dijit 元素用法范例</title>
  213. <programlisting role="php"><![CDATA[
  214. $form->addElement(
  215. 'ComboBox',
  216. 'foo',
  217. array(
  218. 'label' => 'ComboBox (datastore)',
  219. 'storeId' => 'stateStore',
  220. 'storeType' => 'dojo.data.ItemFileReadStore',
  221. 'storeParams' => array(
  222. 'url' => '/js/states.txt',
  223. ),
  224. 'dijitParams' => array(
  225. 'searchAttr' => 'name',
  226. ),
  227. )
  228. );
  229. ]]></programlisting>
  230. </example>
  231. <para>
  232. 上述例子也可以使用 <code>FilteringSelect</code> 来代替 <code>ComboBox</code>。
  233. </para>
  234. </sect3>
  235. <sect3 id="zend.dojo.form.elements.currencyTextBox">
  236. <title> 货币文字框 </title>
  237. <para>
  238. 货币文字框主要用来支持货币输入。货币可以是本地化的,并且支持带小数的和不带小数的数值。
  239. </para>
  240. <para>
  241. 在内部,货币文字框由 <link
  242. linkend="zend.dojo.form.elements.numberTextBox">NumberTextBox</link>、
  243. <link
  244. linkend="zend.dojo.form.elements.validationTextBox">ValidationTextBox</link>
  245. 和 <link linkend="zend.dojo.form.elements.textBox">TextBox</link> 派生,
  246. 所有对这些类可用的方法也对它可用。另外,也可用下列约束方法:
  247. </para>
  248. <itemizedlist>
  249. <listitem><para>
  250. <code>setCurrency($currency)</code>: 设置要使用的货币类型;
  251. 遵循 <ulink url="http://en.wikipedia.org/wiki/ISO_4217">ISO-4217</ulink> 规范。
  252. </para></listitem>
  253. <listitem><para>
  254. <code>getCurrency()</code>: 获取当前货币类型。
  255. </para></listitem>
  256. <listitem><para>
  257. <code>setSymbol($symbol)</code>: 设置 3-letter <ulink
  258. url="http://en.wikipedia.org/wiki/ISO_4217">ISO-4217</ulink> 货币符号。
  259. </para></listitem>
  260. <listitem><para>
  261. <code>getSymbol()</code>: 获取当前货币符号。
  262. </para></listitem>
  263. <listitem><para>
  264. <code>setFractional($flag)</code>: 设置是否支持小数值。
  265. </para></listitem>
  266. <listitem><para>
  267. <code>getFractional()</code>: 获取小数标记的状态。
  268. </para></listitem>
  269. </itemizedlist>
  270. <example id="zend.dojo.form.elements.currencyTextBox.example">
  271. <title> 货币文字框 dijit 元素用法范例 </title>
  272. <programlisting role="php"><![CDATA[
  273. $form->addElement(
  274. 'CurrencyTextBox',
  275. 'foo',
  276. array(
  277. 'label' => 'Currency:',
  278. 'required' => true,
  279. 'currency' => 'USD',
  280. 'invalidMessage' => 'Invalid amount. Include dollar sign, commas, and cents.',
  281. 'fractional' => false,
  282. )
  283. );
  284. ]]></programlisting>
  285. </example>
  286. </sect3>
  287. <sect3 id="zend.dojo.form.elements.dateTextBox">
  288. <title> 日期文字框 </title>
  289. <para>
  290. 日期文字框提供一个下拉式日历用来选择日期,也有一个客户端的日期校验和格式化。
  291. </para>
  292. <para>
  293. 在内部,日期文字框从 <link
  294. linkend="zend.dojo.form.elements.validationTextBox">ValidationTextBox</link>
  295. 和 <link linkend="zend.dojo.form.elements.textBox">TextBox</link> 派生,
  296. 所有对这些类可用的方法也对它可用。另外,下列方法也可以独立使用:
  297. </para>
  298. <itemizedlist>
  299. <listitem><para>
  300. <code>setAmPm($flag)</code> 和 <code>getAmPm()</code>: 是否在时间上使用 AM/PM。
  301. </para></listitem>
  302. <listitem><para>
  303. <code>setStrict($flag)</code> 和 <code>getStrict()</code>:
  304. 是否用严格的正则表达式校验输入。如果是缺省的 false,则对空白字符和一些缩写不严格检查。
  305. </para></listitem>
  306. <listitem><para>
  307. <code>setLocale($locale)</code> 和 <code>getLocale()</code>:
  308. 设置和获取用于特定元素的地方。
  309. </para></listitem>
  310. <listitem><para>
  311. <code>setDatePattern($pattern)</code> 和
  312. <code>getDatePattern()</code>: 提供和读取 <ulink
  313. url="http://www.unicode.org/reports/tr35/#Date_Format_Patterns">unicode
  314. 日期格式模型 </ulink> 来格式化日期。
  315. </para></listitem>
  316. <listitem><para>
  317. <code>setFormatLength($formatLength)</code> 和
  318. <code>getFormatLength()</code>: 提供和读取格式长度类型,是 "long"、 "short"、 "medium"
  319. 或 "full" 其中之一。
  320. </para></listitem>
  321. <listitem><para>
  322. <code>setSelector($selector)</code> 和
  323. <code>getSelector()</code>: 提供和读取选择器的风格, "date" 或 "time"。
  324. </para></listitem>
  325. </itemizedlist>
  326. <example id="zend.dojo.form.elements.dateTextBox.example">
  327. <title> 日期文字框 dijit 元素用法范例 </title>
  328. <programlisting role="php"><![CDATA[
  329. $form->addElement(
  330. 'DateTextBox',
  331. 'foo',
  332. array(
  333. 'label' => 'Date:',
  334. 'required' => true,
  335. 'invalidMessage' => 'Invalid date specified.',
  336. 'formatLength' => 'long',
  337. )
  338. );
  339. ]]></programlisting>
  340. </example>
  341. </sect3>
  342. <sect3 id="zend.dojo.form.elements.horizontalSlider">
  343. <title> 水平滑尺(HorizontalSlider)</title>
  344. <para>
  345. 水平滑尺提供了一个滑尺 UI 小部件用来在一个范围内选择数值。
  346. 在内部,它设置一个隐藏元素的值然后由表单提交。
  347. </para>
  348. <para>
  349. 水平滑尺从 <link
  350. linkend="zend.dojo.form.elements.slider">abstract Slider dijit
  351. element</link> 派生。另外,有许多方法用来设置和配置滑尺刻度和刻度标签。
  352. </para>
  353. <itemizedlist>
  354. <listitem>
  355. <para>
  356. <code>setTopDecorationDijit($dijit)</code> 和
  357. <code>setBottomDecorationDijit($dijit)</code>:
  358. 设置 dijit 的名字用于滑尺的顶或底。这个不包括"dijit.form."前缀,
  359. 已经是最终的名字 - "HorizontalRule" 或 "HorizontalRuleLabels"。
  360. </para>
  361. </listitem>
  362. <listitem>
  363. <para>
  364. <code>setTopDecorationContainer($container)</code> 和
  365. <code>setBottomDecorationContainer($container)</code>:
  366. 指定用于刻度的容器元素的名字,如:'topRule'、 'topContainer'等。
  367. </para>
  368. </listitem>
  369. <listitem>
  370. <para>
  371. <code>setTopDecorationLabels(array $labels)</code> 和
  372. <code>setBottomDecorationLabels(array $labels)</code>:
  373. 设置标签用于 RuleLabels dijit 类型之一,这些是索引数组;
  374. 指定一个空间来跳过给定的标签位置(如开头或结尾)。
  375. </para>
  376. </listitem>
  377. <listitem>
  378. <para>
  379. <code>setTopDecorationParams(array $params)</code> 和
  380. <code>setBottomDecorationParams(array $params)</code>:
  381. 配置给定的刻度或刻度标签 dijit 的 dijit 参数。
  382. </para>
  383. </listitem>
  384. <listitem>
  385. <para>
  386. <code>setTopDecorationAttribs(array $attribs)</code> 和
  387. <code>setBottomDecorationAttribs(array $attribs)</code>:
  388. 指定给定的刻度或刻度标签 HTML 元素容器的 HTML 属性。
  389. </para>
  390. </listitem>
  391. <listitem>
  392. <para>
  393. <code>getTopDecoration()</code> 和
  394. <code>getBottomDecoration()</code>:
  395. 获取所有由上述增变器给定规则或 RuleLabels 定义的元数据。
  396. </para>
  397. </listitem>
  398. </itemizedlist>
  399. <example id="zend.dojo.form.elements.horizontalSlider.example">
  400. <title> 水平滑尺 dijit 元素用法范例 </title>
  401. <para>
  402. 下面创建一个整数范围为 -10到10的水平滑尺。顶上有 20%、 40%、 60% 和 80%标记。
  403. 底下有 0 、50% 和 100%。每次改变,隐藏元素的值就更新一次。
  404. </para>
  405. <programlisting role="php"><![CDATA[
  406. $form->addElement(
  407. 'HorizontalSlider',
  408. 'horizontal',
  409. array(
  410. 'label' => 'HorizontalSlider',
  411. 'value' => 5,
  412. 'minimum' => -10,
  413. 'maximum' => 10,
  414. 'discreteValues' => 11,
  415. 'intermediateChanges' => true,
  416. 'showButtons' => true,
  417. 'topDecorationDijit' => 'HorizontalRuleLabels',
  418. 'topDecorationContainer' => 'topContainer',
  419. 'topDecorationLabels' => array(
  420. ' ',
  421. '20%',
  422. '40%',
  423. '60%',
  424. '80%',
  425. ' ',
  426. ),
  427. 'topDecorationParams' => array(
  428. 'container' => array(
  429. 'style' => 'height:1.2em; font-size=75%;color:gray;',
  430. ),
  431. 'list' => array(
  432. 'style' => 'height:1em; font-size=75%;color:gray;',
  433. ),
  434. ),
  435. 'bottomDecorationDijit' => 'HorizontalRule',
  436. 'bottomDecorationContainer' => 'bottomContainer',
  437. 'bottomDecorationLabels' => array(
  438. '0%',
  439. '50%',
  440. '100%',
  441. ),
  442. 'bottomDecorationParams' => array(
  443. 'list' => array(
  444. 'style' => 'height:1em; font-size=75%;color:gray;',
  445. ),
  446. ),
  447. )
  448. );
  449. ]]></programlisting>
  450. </example>
  451. </sect3>
  452. <sect3 id="zend.dojo.form.elements.numberSpinner">
  453. <title> 数字微调控制器(NumberSpinner)</title>
  454. <para>
  455. 数字微调控制器是一个文本元素用来输入数字值;它也包括用于增加和减少一定值的元素。
  456. </para>
  457. <para>
  458. 可用方法如下:
  459. </para>
  460. <itemizedlist>
  461. <listitem><para>
  462. <code>setDefaultTimeout($timeout)</code> 和
  463. <code>getDefaultTimeout()</code>: 设置和获取缺省超时值,以毫秒为单位,
  464. 当按住按钮时,数值就发生变化。
  465. </para></listitem>
  466. <listitem><para>
  467. <code>setTimeoutChangeRate($rate)</code> 和
  468. <code>getTimeoutChangeRate()</code>: 设置和获取比率,以毫秒为单位,
  469. 就是当按住按钮时,数值的变化率。
  470. </para></listitem>
  471. <listitem><para>
  472. <code>setLargeDelta($delta)</code> 和
  473. <code>getLargeDelta()</code>: 设置和读取当按钮被按住数字应当改变的值的大小。
  474. </para></listitem>
  475. <listitem><para>
  476. <code>setSmallDelta($delta)</code> 和
  477. <code>getSmallDelta()</code>: 设置和读取当按钮被按住一次数字的变化量。
  478. </para></listitem>
  479. <listitem><para>
  480. <code>setIntermediateChanges($flag)</code> 和
  481. <code>getIntermediateChanges()</code>: 设置和读取当按钮被按住时是否显示数值的标志。
  482. </para></listitem>
  483. <listitem><para>
  484. <code>setRangeMessage($message)</code> 和
  485. <code>getRangeMessage()</code>: 设置和读取指示可用数值范围的信息。
  486. </para></listitem>
  487. <listitem><para>
  488. <code>setMin($value)</code> 和 <code>getMin()</code>:
  489. 设置和获取最小可能值。
  490. </para></listitem>
  491. <listitem><para>
  492. <code>setMax($value)</code> 和 <code>getMax()</code>:
  493. 设置和获取最大可能值。
  494. </para></listitem>
  495. </itemizedlist>
  496. <example id="zend.dojo.form.elements.numberSpinner.example">
  497. <title> 数字微调控制器 dijit 元素用法范例 </title>
  498. <programlisting role="php"><![CDATA[
  499. $form->addElement(
  500. 'NumberSpinner',
  501. 'foo',
  502. array(
  503. 'value' => '7',
  504. 'label' => 'NumberSpinner',
  505. 'smallDelta' => 5,
  506. 'largeDelta' => 25,
  507. 'defaultTimeout' => 500,
  508. 'timeoutChangeRate' => 100,
  509. 'min' => 9,
  510. 'max' => 1550,
  511. 'places' => 0,
  512. 'maxlength' => 20,
  513. )
  514. );
  515. ]]></programlisting>
  516. </example>
  517. </sect3>
  518. <sect3 id="zend.dojo.form.elements.numberTextBox">
  519. <title> 数字框 </title>
  520. <para>
  521. 数字框是一个文本元素用来输入数字值,不象数字增变器,数字框用手工输入。
  522. 校验和限制可以使数值在一定的范围并符合一定的格式。
  523. </para>
  524. <para>
  525. 在内部,数字框从 <link
  526. linkend="zend.dojo.form.elements.validationTextBox">ValidationTextBox</link>
  527. 和 <link linkend="zend.dojo.form.elements.textBox">TextBox</link>派生;
  528. 所有对这些类可用的方法都可用,另外,下列方法可以独立使用:
  529. </para>
  530. <itemizedlist>
  531. <listitem><para>
  532. <code>setLocale($locale)</code> 和 <code>getLocale()</code>:
  533. 指定和获取一个特定或预备的地方来使用 dijit。
  534. </para></listitem>
  535. <listitem><para>
  536. <code>setPattern($pattern)</code> 和
  537. <code>getPattern()</code>: 设置和获取一个 <ulink
  538. url="http://www.unicode.org/reports/tr35/#Number_Format_Patterns">数字模型格式
  539. </ulink> 来格式化数字。
  540. </para></listitem>
  541. <listitem><para>
  542. <code>setType($type)</code> 和 <code>getType()</code>:
  543. 设置和获取数字格式类型(应当为 'decimal'、'percent' 或 'currency'其中之一 )。
  544. </para></listitem>
  545. <listitem><para>
  546. <code>setPlaces($places)</code> 和 <code>getPlaces()</code>:设置和获取有多少小数位。
  547. </para></listitem>
  548. <listitem><para>
  549. <code>setStrict($flag)</code> 和 <code>getStrict()</code>:
  550. 设置和读取严格标志的值,它用来指示对空白字符和非数字字符控制的严格程度。
  551. </para></listitem>
  552. </itemizedlist>
  553. <example id="zend.dojo.form.elements.numberTextBox.example">
  554. <title> 数字框 dijit 元素用法范例 </title>
  555. <programlisting role="php"><![CDATA[
  556. $form->addElement(
  557. 'NumberTextBox',
  558. 'elevation',
  559. array(
  560. 'label' => 'NumberTextBox',
  561. 'required' => true,
  562. 'invalidMessage' => 'Invalid elevation.',
  563. 'places' => 0,
  564. 'constraints' => array(
  565. 'min' => -20000,
  566. 'max' => 20000,
  567. ),
  568. )
  569. );
  570. ]]></programlisting>
  571. </example>
  572. </sect3>
  573. <sect3 id="zend.dojo.form.elements.passwordTextBox">
  574. <title>密码框</title>
  575. <para>
  576. 密码框是个 ValidationTextBox,它和密码输入有联系;它唯一的意图是允许
  577. dijit-themed 文本输入密码并提供客户端校验。
  578. </para>
  579. <para>
  580. 在内部,密码框从 <link
  581. linkend="zend.dojo.form.elements.validationTextBox">ValidationTextBox</link>
  582. 和 <link linkend="zend.dojo.form.elements.textBox">TextBox</link> 派生;
  583. 所有对这些类可用的方法都可用。
  584. </para>
  585. <example id="zend.dojo.form.elements.passwordTextBox.example">
  586. <title>密码框 dijit 元素用法范例</title>
  587. <programlisting role="php"><![CDATA[
  588. $form->addElement(
  589. 'PasswordTextBox',
  590. 'password',
  591. array(
  592. 'label' => 'Password',
  593. 'required' => true,
  594. 'trim' => true,
  595. 'lowercase' => true,
  596. 'regExp' => '^[a-z0-9]{6,}$',
  597. 'invalidMessage' => 'Invalid password; must be at least 6 alphanumeric characters',
  598. )
  599. );
  600. ]]></programlisting>
  601. </example>
  602. </sect3>
  603. <sect3 id="zend.dojo.form.elements.radioButton">
  604. <title>单选按钮</title>
  605. <para>
  606. 单选按钮封装了标准单选输入元素来提供一个和其它 dojo dijits 一致的外观。
  607. (因为英文为 radio button,单选按钮在过去也被翻译为无线电按钮,但从功能上讲,单选按钮更准确 Jason Qi注)
  608. </para>
  609. <para>
  610. 单选按钮从 DijitMulti 继承,它让你通过 <code>setMultiOptions()</code> 和 <code>setMultiOption()</code> 方法来指定选择选项。
  611. </para>
  612. <para>
  613. 缺省地,该元素注册一个 <code>InArray</code> 校验器,它依靠注册的选项的数组键来校验。
  614. 你可以通过调用 <code>setRegisterInArrayValidator(false)</code> 或传递一个 false 值给
  615. <code>registerInArrayValidator</code>配置键来禁止该行为。
  616. </para>
  617. <example id="zend.dojo.form.elements.radioButton.example">
  618. <title> 单选按钮 dijit 元素用法范例 </title>
  619. <programlisting role="php"><![CDATA[
  620. $form->addElement(
  621. 'RadioButton',
  622. 'foo',
  623. array(
  624. 'label' => 'RadioButton',
  625. 'multiOptions' => array(
  626. 'foo' => 'Foo',
  627. 'bar' => 'Bar',
  628. 'baz' => 'Baz',
  629. ),
  630. 'value' => 'bar',
  631. )
  632. );
  633. ]]></programlisting>
  634. </example>
  635. </sect3>
  636. <sect3 id="zend.dojo.form.elements.slider">
  637. <title>滑尺摘要元素</title>
  638. <para>
  639. <link linkend="zend.dojo.form.elements.horizontalSlider">水平滑尺</link> 和
  640. <link linkend="zend.dojo.form.elements.verticalSlider">垂直滑尺</link>
  641. 都是从滑尺摘要元素派生而来的。它包含了许多通用的方法来配置你的滑尺,包括:
  642. </para>
  643. <itemizedlist>
  644. <listitem><para>
  645. <code>setClickSelect($flag)</code> 和
  646. <code>getClickSelect()</code>:
  647. 设置和获取确定是否点击滑尺来可以修改数值的标志。
  648. </para></listitem>
  649. <listitem><para>
  650. <code>setIntermediateChanges($flag)</code> 和
  651. <code>getIntermediateChanges()</code>:
  652. 设置和获取是否对每个滑尺修改时间发送通知的标志。
  653. </para></listitem>
  654. <listitem><para>
  655. <code>setShowButtons($flag)</code> 和
  656. <code>getShowButtons()</code>:
  657. 设置和获取是否在两端显示按钮的标志。如果有的话,客户可以通过点击按钮来修改滑尺的值。
  658. </para></listitem>
  659. <listitem><para>
  660. <code>setDiscreteValues($value)</code> 和
  661. <code>getDiscreteValues()</code>:
  662. 设置和获取滑尺的不连续的数值。
  663. </para></listitem>
  664. <listitem><para>
  665. <code>setMaximum($value)</code> 和 <code>getMaximum()</code>:设置滑尺的最大值。
  666. </para></listitem>
  667. <listitem><para>
  668. <code>setMinimum($value)</code> and <code>getMinimum()</code>:设置滑尺的最小值。
  669. </para></listitem>
  670. <listitem><para>
  671. <code>setPageIncrement($value)</code> 和
  672. <code>getPageIncrement()</code>: 设置滑尺在键盘事件上修改的数量。
  673. </para></listitem>
  674. </itemizedlist>
  675. <para>
  676. 范例在每个具体的继承类里提供。
  677. </para>
  678. </sect3>
  679. <sect3 id="zend.dojo.form.elements.submitButton">
  680. <title>提交按钮</title>
  681. <para>
  682. 虽然没有叫提交按钮的 Dijit,但我们还是在此提供一个按钮 dijit 用来提交
  683. 表单而不需请求任何另外的 javascript 绑定。它的工作方式和
  684. <link linkend="zend.dojo.form.elements.button">按钮 dijit</link> 一模一样。
  685. </para>
  686. <example id="zend.dojo.form.elements.submitButton.example">
  687. <title>Example SubmitButton dijit element usage</title>
  688. <programlisting role="php"><![CDATA[
  689. $form->addElement(
  690. 'SubmitButton',
  691. 'foo',
  692. array(
  693. 'required' => false,
  694. 'ignore' => true,
  695. 'label' => 'Submit Button!',
  696. )
  697. );
  698. ]]></programlisting>
  699. </example>
  700. </sect3>
  701. <sect3 id="zend.dojo.form.elements.textBox">
  702. <title>文字框</title>
  703. <para>
  704. 文字框用来输入文字,在外观上和其它 dijit 保持一致。然而,它有一些过滤和校验的功能,详见下列方法:
  705. </para>
  706. <itemizedlist>
  707. <listitem><para>
  708. <code>setLowercase($flag)</code> 和
  709. <code>getLowercase()</code>: 设置和获取是否把输入转为小写的标志。
  710. </para></listitem>
  711. <listitem><para>
  712. <code>setPropercase($flag)</code> 和
  713. <code>getPropercase()</code>: 设置和获取是否把输入转换为适当的大小写的标志。
  714. Case.
  715. </para></listitem>
  716. <listitem><para>
  717. <code>setUppercase($flag)</code> 和 <code>getUppercase()</code>: 设置和获取是否把输入转为大写的标志。
  718. </para></listitem>
  719. <listitem><para>
  720. <code>setTrim($flag)</code> 和 <code>getTrim()</code>: 设置和获取是否把引导和拖尾的空白字符去掉的标志。
  721. </para></listitem>
  722. <listitem><para>
  723. <code>setMaxLength($length)</code> 和
  724. <code>getMaxLength()</code>: 设置和获取输入的最大长度。
  725. </para></listitem>
  726. </itemizedlist>
  727. <example id="zend.dojo.form.elements.textBox.example">
  728. <title> 文字框 dijit 元素用法范例 </title>
  729. <programlisting role="php"><![CDATA[
  730. $form->addElement(
  731. 'TextBox',
  732. 'foo',
  733. array(
  734. 'value' => 'some text',
  735. 'label' => 'TextBox',
  736. 'trim' => true,
  737. 'propercase' => true,
  738. )
  739. );
  740. ]]></programlisting>
  741. </example>
  742. </sect3>
  743. <sect3 id="zend.dojo.form.elements.textarea">
  744. <title>Textarea</title>
  745. <para>
  746. Textarea 就像标准的 HTML textarea一样。然而,它不支持行列的设置。
  747. 作为替代,textarea 宽度可以用标准的 CSS 来设置,行就完全忽略了。当输入字符增加时,textarea 就垂直增长。
  748. </para>
  749. <example id="zend.dojo.form.elements.textarea.example">
  750. <title> Textarea dijit 元素用法范例 </title>
  751. <programlisting role="php"><![CDATA[
  752. $form->addElement(
  753. 'Textarea',
  754. 'textarea',
  755. array(
  756. 'label' => 'Textarea',
  757. 'required' => true,
  758. 'style' => 'width: 200px;',
  759. )
  760. );
  761. ]]></programlisting>
  762. </example>
  763. </sect3>
  764. <sect3 id="zend.dojo.form.elements.timeTextBox">
  765. <title> 时间文字框 </title>
  766. <para>
  767. 时间文字框是提供下拉式选择时间的文字输入框。下拉框可配置为显示一特定的时间窗口,带有特定的增量。
  768. </para>
  769. <para>
  770. 在内部,时间文字框从 <link
  771. linkend="zend.dojo.form.elements.dateTextBox">日期文字框</link>、
  772. <link
  773. linkend="zend.dojo.form.elements.validationTextBox">校验文字框</link>
  774. 和 <link linkend="zend.dojo.form.elements.textBox">文字框</link> 派生。
  775. 所有对这些类可用的方法都可用。另外,下列方法可以独立使用:
  776. </para>
  777. <itemizedlist>
  778. <listitem><para>
  779. <code>setTimePattern($pattern)</code> 和
  780. <code>getTimePattern()</code>: 设置和获取 <ulink
  781. url="http://www.unicode.org/reports/tr35/#Date_Format_Patterns">unicode
  782. 时间格式模型</ulink> 来格式化时间。
  783. </para></listitem>
  784. <listitem><para>
  785. <code>setClickableIncrement($format)</code> 和
  786. <code>getClickableIncrement()</code>: 设置 <ulink
  787. url="http://en.wikipedia.org/wiki/ISO_8601">ISO-8601</ulink> 字符串,来表示
  788. 每个在时间 picker increses 的可点击的元素的数量。
  789. </para></listitem>
  790. <listitem><para>
  791. <code>setVisibleIncrement($format)</code> 和
  792. <code>getVisibleIncrement()</code>: 在时间选择器中设置增量的可见性,必须遵循 ISO-8601格式。
  793. </para></listitem>
  794. <listitem><para>
  795. <code>setVisibleRange($format)</code> 和
  796. <code>getVisibleRange()</code>:
  797. 在时间选择器中在给定的时刻,设置和获取可见时间的范围,必须遵循 ISO-8601格式。
  798. </para></listitem>
  799. </itemizedlist>
  800. <example id="zend.dojo.form.elements.timeTextBox.example">
  801. <title> 时间文字框 dijit 元素用法范例 </title>
  802. <para>
  803. 下面讲生成一个时间文字框,每次显示 2 小时,增量是 10 分钟。
  804. </para>
  805. <programlisting role="php"><![CDATA[
  806. $form->addElement(
  807. 'TimeTextBox',
  808. 'foo',
  809. array(
  810. 'label' => 'TimeTextBox',
  811. 'required' => true,
  812. 'visibleRange' => 'T04:00:00',
  813. 'visibleIncrement' => 'T00:10:00',
  814. 'clickableIncrement' => 'T00:10:00',
  815. )
  816. );
  817. ]]></programlisting>
  818. </example>
  819. </sect3>
  820. <sect3 id="zend.dojo.form.elements.validationTextBox">
  821. <title>校验文字框</title>
  822. <para>
  823. 校验文字框添加校验和限制给文字输入。
  824. 在内部,它从 <link linkend="zend.dojo.form.elements.textBox">文字框</link> 派生,
  825. 并增加了下列访问器和增变器来处理 dijit 参数:
  826. </para>
  827. <itemizedlist>
  828. <listitem><para>
  829. <code>setInvalidMessage($message)</code> 和
  830. <code>getInvalidMessage()</code>: 设置和获取工具提示消息来显示什么时候值没有通过校验。
  831. </para></listitem>
  832. <listitem><para>
  833. <code>setPromptMessage($message)</code> 和
  834. <code>getPromptMessage()</code>: 设置和获取工具提示消息来显示元素用法。
  835. </para></listitem>
  836. <listitem><para>
  837. <code>setRegExp($regexp)</code> 和 <code>getRegExp()</code>:
  838. 设置和获取用于校验元素的正则表达式。正则表达式不需要边界(不象 PHP 的 preg* 函数家族)。
  839. </para></listitem>
  840. <listitem><para>
  841. <code>setConstraint($key, $value)</code> 和
  842. <code>getConstraint($key)</code>:
  843. 设置和获取另外的限制,用于校验元素;使用子类。限制存储在 dijit 参数数组中,键值为 'constraints'。
  844. </para></listitem>
  845. <listitem><para>
  846. <code>setConstraints(array $constraints)</code> 和
  847. <code>getConstraints()</code>:
  848. 设置和获取独立的限制,用于校验元素,是哟功能子类。
  849. </para></listitem>
  850. <listitem><para>
  851. <code>hasConstraint($key)</code>: 测试是否有给定的限制存在。
  852. </para></listitem>
  853. <listitem><para>
  854. <code>removeConstraint($key)</code> 和
  855. <code>clearConstraints()</code>: 删除元素中一个或所有的限制。
  856. </para></listitem>
  857. </itemizedlist>
  858. <example id="zend.dojo.form.elements.validationTextBox.example">
  859. <title> 校验文字框 dijit 元素用法范例 </title>
  860. <para>
  861. 下面生成一个校验文字框,要求只包含字符的单个字符串(例如,没有空格,大部分标点符号无效)。
  862. </para>
  863. <programlisting role="php"><![CDATA[
  864. $form->addElement(
  865. 'ValidationTextBox',
  866. 'foo',
  867. array(
  868. 'label' => 'ValidationTextBox',
  869. 'required' => true,
  870. 'regExp' => '[\w]+',
  871. 'invalidMessage' => 'Invalid non-space text.',
  872. )
  873. );
  874. ]]></programlisting>
  875. </example>
  876. </sect3>
  877. <sect3 id="zend.dojo.form.elements.verticalSlider">
  878. <title>垂直滑尺(VerticalSlider)</title>
  879. <para>
  880. 垂直滑尺是<link linkend="zend.dojo.form.elements.horizontalSlider">水平滑尺</link>的兄弟,
  881. 操作基本相同。唯一的区别是,对垂直滑尺来说使用了 'left*' 和 'right*' 替换了
  882. 在水平滑尺中的 'top*' 和 'bottom*',并且使用 VerticalRule 和 VerticalRuleLabels
  883. 分别替代了 HorizontalRule 和 HorizontalRuleLabels。
  884. </para>
  885. <example id="zend.dojo.form.elements.verticalSlider.example">
  886. <title> 垂直 dijit 元素使用范例 </title>
  887. <para>
  888. 下面创建一个整数范围为 -10到10的垂直滑尺。左边有 20%、 40%、 60% 和 80%标记。
  889. 右边有 0 、50% 和 100%。每次改变,隐藏元素的值就更新一次。
  890. </para>
  891. <programlisting role="php"><![CDATA[
  892. $form->addElement(
  893. 'VerticalSlider',
  894. 'foo',
  895. array(
  896. 'label' => 'VerticalSlider',
  897. 'value' => 5,
  898. 'style' => 'height: 200px; width: 3em;',
  899. 'minimum' => -10,
  900. 'maximum' => 10,
  901. 'discreteValues' => 11,
  902. 'intermediateChanges' => true,
  903. 'showButtons' => true,
  904. 'leftDecorationDijit' => 'VerticalRuleLabels',
  905. 'leftDecorationContainer' => 'leftContainer',
  906. 'leftDecorationLabels' => array(
  907. ' ',
  908. '20%',
  909. '40%',
  910. '60%',
  911. '80%',
  912. ' ',
  913. ),
  914. 'rightDecorationDijit' => 'VerticalRule',
  915. 'rightDecorationContainer' => 'rightContainer',
  916. 'rightDecorationLabels' => array(
  917. '0%',
  918. '50%',
  919. '100%',
  920. ),
  921. )
  922. );
  923. ]]></programlisting>
  924. </example>
  925. </sect3>
  926. </sect2>
  927. <!--
  928. vim:se ts=4 sw=4 et:
  929. -->