Zend_Dojo-View-Helpers.xml 54 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 19418 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.dojo.view.dijit">
  5. <title>Ayudantes de Vistas Específicos de Dijit</title>
  6. <para>Del manual de Dojo: "Dijit es un sistema de widgets estratificados
  7. encima de dojo". Dijit
  8. incluye una variedad de diseños y forms de
  9. widgets diseñados para proporcionar
  10. características de accesibilidad,
  11. localización, y un look-and-feel estandarizado (y temable).</para>
  12. <para>Zend Framework viene con una variedad de ayudantes de vista que le
  13. permiten suministrar y
  14. utilizar dijits dentro de sus scripts de vista.
  15. Hay tres tipos básicos:</para>
  16. <itemizedlist>
  17. <listitem>
  18. <para>
  19. <emphasis>Layout Containers</emphasis>
  20. : estos están diseñados
  21. para ser utilizados dentro de sus scripts de vista o
  22. consumidos
  23. por los decoradores de forms, para forms, sub forms, y mostrar
  24. grupos.
  25. Envuelven las distintas clases ofrecidas en
  26. dijit.layout. Cada ayudante de vista
  27. dijit layout espera los
  28. siguientes argumentos:
  29. </para>
  30. <itemizedlist>
  31. <listitem>
  32. <para>
  33. <varname>$id</varname>
  34. : el nombre del contenedor o el
  35. DOM ID.
  36. </para>
  37. </listitem>
  38. <listitem>
  39. <para>
  40. <varname>$content</varname>
  41. : el contenido a envolver en
  42. el contenedor esquematizado.
  43. </para>
  44. </listitem>
  45. <listitem>
  46. <para>
  47. <varname>$params</varname>
  48. (opcional): parámetros
  49. específicos de dijit. Básicamente, cualquier atributo
  50. no
  51. <acronym>HTML</acronym>
  52. que pueda utilizarse para configurar el esquema del
  53. contenedor dijit.
  54. </para>
  55. </listitem>
  56. <listitem>
  57. <para>
  58. <varname>$attribs</varname>
  59. (optional): cualquier de los
  60. otros atributos
  61. <acronym>HTML</acronym>
  62. que deberían utilizarse para
  63. mostrar el contenedor div. Si se pasa la clave
  64. 'id' en
  65. este array, será utilizada para el elemento DOM id del
  66. form, y
  67. <varname>$id</varname>
  68. será utilizado por su
  69. nombre.
  70. </para>
  71. </listitem>
  72. </itemizedlist>
  73. <para>Si no pasa argumentos a un ayudante de vista de esquemas
  74. dijit, el ayudante mismo
  75. será devuelto. Esto le permite capturar
  76. contenido, que a menudo es una manera más
  77. fácil para pasar
  78. contenido al esquema del contenedor. Ejemplos de esta
  79. funcionalidad
  80. se mostrarán más tarde en esta sección.</para>
  81. </listitem>
  82. <listitem>
  83. <para>
  84. <emphasis>Form Dijit</emphasis>
  85. : el dijit dijit.form.Form,
  86. aunque no es completamente necesario para su uso con
  87. elementos
  88. de dijit forms, se asegurará de que si hay un intento de enviar
  89. un form que
  90. no valide contra las validaciones del lado del
  91. cliente, se detendrá el envío y se
  92. emitirán mensajes de error de
  93. validación. El ayudante de vista dijit espera los
  94. siguientes
  95. argumentos:
  96. </para>
  97. <itemizedlist>
  98. <listitem>
  99. <para>
  100. <varname>$id</varname>
  101. : el nombre del contenedor o el
  102. DOM ID.
  103. </para>
  104. </listitem>
  105. <listitem>
  106. <para>
  107. <varname>$attribs</varname>
  108. (opcional): cualquier otro
  109. de los atributos
  110. <acronym>HTML</acronym>
  111. que deberían ser utilizados para
  112. mostrar el div del contenedor.
  113. </para>
  114. </listitem>
  115. <listitem>
  116. <para>
  117. <varname>$content</varname>
  118. (opcional): el contenido a
  119. envolver en el form. Si no se pasa ninguno, se
  120. utilizará
  121. un string vacío.
  122. </para>
  123. </listitem>
  124. </itemizedlist>
  125. <para>
  126. El orden de los argumentos varía de los demás dijits a fin de
  127. mantener la
  128. compatibilidad con el standard
  129. <methodname>form()</methodname>
  130. del ayudante de vista.
  131. </para>
  132. </listitem>
  133. <listitem>
  134. <para>
  135. <emphasis>Elementos del Form</emphasis>
  136. : éstos están diseñados
  137. para ser consumidos con
  138. <classname>Zend_Form</classname>
  139. , pero
  140. pueden ser utilizados standalone también en sus scripts de
  141. vista. Cada elemento
  142. de ayudante de vista dijit espera los
  143. siguientes argumentos:
  144. </para>
  145. <itemizedlist>
  146. <listitem>
  147. <para>
  148. <varname>$id</varname>
  149. : el nombre del elemento o el DOM
  150. ID.
  151. </para>
  152. </listitem>
  153. <listitem>
  154. <para>
  155. <varname>$value</varname>
  156. (opcional): el valor actual de
  157. ese elemento.
  158. </para>
  159. </listitem>
  160. <listitem>
  161. <para>
  162. <varname>$params</varname>
  163. (opcional): parámetros
  164. específicos de dijit. Básicamente, cualquier atributo
  165. no
  166. <acronym>HTML</acronym>
  167. que pueda utilizarse para configurar un dijit.
  168. </para>
  169. </listitem>
  170. <listitem>
  171. <para>
  172. <varname>$attribs</varname>
  173. (opcional): cualquiera de
  174. los otros atributos adicionales
  175. <acronym>HTML</acronym>
  176. que deberían ser
  177. utilizados para mostrar el dijit. Si se pasa la clave
  178. 'id' en
  179. este array, será utilizado por el elemento DOM
  180. id del form, y
  181. <varname>$id</varname>
  182. será utilizado por
  183. su nombre.
  184. </para>
  185. </listitem>
  186. </itemizedlist>
  187. <para>Algunos de los elementos requieren más argumentos; esto se
  188. observó con el elemento
  189. individual ayudante de descripciones.
  190. </para>
  191. </listitem>
  192. </itemizedlist>
  193. <para>Con el fin de utilizar estos ayudantes de vista, necesita registrar
  194. el path a los ayudantes
  195. de vista dojo con su objeto vista.</para>
  196. <example id="zend.dojo.view.dijit.prefixpath">
  197. <title>Registrando el Prefijo del Path al Ayudante de Vista de
  198. Dojo</title>
  199. <programlisting language="php"><![CDATA[
  200. $view->addHelperPath('Zend/Dojo/View/Helper', 'Zend_Dojo_View_Helper');
  201. ]]></programlisting>
  202. </example>
  203. <sect3 id="zend.dojo.view.dijit.layout">
  204. <title>Elementos del Esquema Dijit</title>
  205. <para>
  206. La familia de elementos dijit.layout son para crear esquemas
  207. personalizados y previsibles
  208. para su sitio. Para cualquier pregunta
  209. sobre el uso general,
  210. <ulink url="http://dojotoolkit.org/book/dojo-book-0-9/part-2-dijit/layout"> lea
  211. más sobre ellos en el manual de Dojo</ulink>
  212. .
  213. </para>
  214. <para>
  215. Todos los elementos de los esquemas dijit tienen la firma
  216. <methodname>string ($id = null, $content = '', array $params =
  217. array(), array $attribs =
  218. array())</methodname>
  219. . En todos los
  220. casos, si no pasa argumentos, será devuelto el mismo objeto
  221. ayudante. Esto
  222. le da acceso a los métodos
  223. <methodname>captureStart()</methodname>
  224. y
  225. <methodname>captureEnd()</methodname>
  226. , que permiten capturar
  227. contenido en lugar de pasarlo al esquema del contenedor.
  228. </para>
  229. <itemizedlist>
  230. <listitem>
  231. <para>
  232. <emphasis>AccordionContainer</emphasis>
  233. :
  234. dijit.layout.AccordionContainer. Apilará todos los cuadros
  235. juntos verticalmente;
  236. con un click en la barra del título de
  237. un cuadro, se expandirá y mostrará ese
  238. cuadro en particular.
  239. </para>
  240. <programlisting language="php"><![CDATA[
  241. <?php echo $view->accordionContainer(
  242. 'foo',
  243. $content,
  244. array(
  245. 'duration' => 200,
  246. ),
  247. array(
  248. 'style' => 'width: 200px; height: 300px;',
  249. ),
  250. ); ?>
  251. ]]></programlisting>
  252. </listitem>
  253. <listitem>
  254. <para>
  255. <emphasis>AccordionPane</emphasis>
  256. :
  257. dijit.layout.AccordionPane. Para su uso en
  258. AccordionContainer.
  259. </para>
  260. <programlisting language="php"><![CDATA[
  261. <?php echo $view->accordionPane(
  262. 'foo',
  263. $content,
  264. array(
  265. 'title' => 'Pane Title',
  266. ),
  267. array(
  268. 'style' => 'background-color: lightgray;',
  269. ),
  270. ); ?>
  271. ]]></programlisting>
  272. </listitem>
  273. <listitem>
  274. <para>
  275. <emphasis>BorderContainer</emphasis>
  276. :
  277. dijit.layout.BorderContainer. Logra diseños con cuadros
  278. opcionalmente
  279. redimensionables como se puede ver en una
  280. aplicación tradicional.
  281. </para>
  282. <programlisting language="php"><![CDATA[
  283. <?php echo $view->borderContainer(
  284. 'foo',
  285. $content,
  286. array(
  287. 'design' => 'headline',
  288. ),
  289. array(
  290. 'style' => 'width: 100%; height: 100%',
  291. ),
  292. ); ?>
  293. ]]></programlisting>
  294. </listitem>
  295. <listitem>
  296. <para>
  297. <emphasis>ContentPane</emphasis>
  298. : dijit.layout.ContentPane.
  299. Usarlo dentro de cualquier contenedor excepto
  300. AccordionContainer.
  301. </para>
  302. <programlisting language="php"><![CDATA[
  303. <?php echo $view->contentPane(
  304. 'foo',
  305. $content,
  306. array(
  307. 'title' => 'Pane Title',
  308. 'region' => 'left',
  309. ),
  310. array(
  311. 'style' => 'width: 120px; background-color: lightgray;',
  312. ),
  313. ); ?>
  314. ]]></programlisting>
  315. </listitem>
  316. <listitem>
  317. <para>
  318. <emphasis>SplitContainer</emphasis>
  319. :
  320. dijit.layout.SplitContainer. Permite cuadros de contenido
  321. redimensionables,
  322. discontinuado en Dojo en favor de
  323. BorderContainer.
  324. </para>
  325. <programlisting language="php"><![CDATA[
  326. <?php echo $view->splitContainer(
  327. 'foo',
  328. $content,
  329. array(
  330. 'orientation' => 'horizontal',
  331. 'sizerWidth' => 7,
  332. 'activeSizing' => true,
  333. ),
  334. array(
  335. 'style' => 'width: 400px; height: 500px;',
  336. ),
  337. ); ?>
  338. ]]></programlisting>
  339. </listitem>
  340. <listitem>
  341. <para>
  342. <emphasis>StackContainer</emphasis>
  343. :
  344. dijit.layout.StackContainer. Todos los cuadros dentro de un
  345. StackContainer se
  346. colocan en una pila; crea botones o
  347. funcionalidades a ser revelados uno a uno.
  348. </para>
  349. <programlisting language="php"><![CDATA[
  350. <?php echo $view->stackContainer(
  351. 'foo',
  352. $content,
  353. array(),
  354. array(
  355. 'style' => 'width: 400px; height: 500px; border: 1px;',
  356. ),
  357. ); ?>
  358. ]]></programlisting>
  359. </listitem>
  360. <listitem>
  361. <para>
  362. <emphasis>TabContainer</emphasis>
  363. :
  364. dijit.layout.TabContainer. Todos los cuadros dentro de un
  365. TabContainer se
  366. colocan en una pila, con pestañas colocadas
  367. a un lado para cambiar entre ellos.
  368. </para>
  369. <programlisting language="php"><![CDATA[
  370. <?php echo $view->tabContainer(
  371. 'foo',
  372. $content,
  373. array(),
  374. array(
  375. 'style' => 'width: 400px; height: 500px; border: 1px;',
  376. ),
  377. ); ?>
  378. ]]></programlisting>
  379. </listitem>
  380. </itemizedlist>
  381. <para>Los siguientes métodos de captura están disponibles para todos
  382. los esquemas de
  383. contenedores:</para>
  384. <itemizedlist>
  385. <listitem>
  386. <para>
  387. <methodname>captureStart($id, array $params = array(), array
  388. $attribs = array())</methodname>
  389. : inicia la captura del
  390. contenido a incluir en un contenedor.
  391. <varname>$params</varname>
  392. hace referencia a dijit
  393. params para utilizar con el contenedor, mientras que
  394. <varname>$attribs</varname>
  395. se refiere a cualquier
  396. atributo general
  397. <acronym>HTML</acronym>
  398. a utilizar.
  399. </para>
  400. <para>
  401. Los contenedores pueden estar anidados durante la
  402. captura,
  403. <emphasis>mientras no hayan IDs
  404. duplicados</emphasis>
  405. .
  406. </para>
  407. </listitem>
  408. <listitem>
  409. <para>
  410. <methodname>captureEnd($id)</methodname>
  411. : finalizar la
  412. captura del contenido a incluir en un contenedor.
  413. <varname>$id</varname>
  414. debe referirse a un id
  415. anteriormente utilizado con la llamada
  416. <methodname>captureStart()</methodname>
  417. . Regresa el
  418. string representando al contenedor y su contenido, como si
  419. simplemente pasara el contenido al ayudante mismo.
  420. </para>
  421. </listitem>
  422. </itemizedlist>
  423. <example id="zend.dojo.view.dijit.layout.borderexample">
  424. <title>Ejemplo de esquema de BorderContainer dijit</title>
  425. <para>Los BorderContainers, particularmente cuando junto a la
  426. capacidad de capturar
  427. contenido, son útiles especialmente para
  428. lograr efectos complejos de diseño.</para>
  429. <programlisting language="php"><![CDATA[
  430. $view->borderContainer()->captureStart('masterLayout',
  431. array('design' => 'headline'));
  432. echo $view->contentPane(
  433. 'menuPane',
  434. 'This is the menu pane',
  435. array('region' => 'top'),
  436. array('style' => 'background-color: darkblue;')
  437. );
  438. echo $view->contentPane(
  439. 'navPane',
  440. 'This is the navigation pane',
  441. array('region' => 'left'),
  442. array('style' => 'width: 200px; background-color: lightblue;')
  443. );
  444. echo $view->contentPane(
  445. 'mainPane',
  446. 'This is the main content pane area',
  447. array('region' => 'center'),
  448. array('style' => 'background-color: white;')
  449. );
  450. echo $view->contentPane(
  451. 'statusPane',
  452. 'Status area',
  453. array('region' => 'bottom'),
  454. array('style' => 'background-color: lightgray;')
  455. );
  456. echo $view->borderContainer()->captureEnd('masterLayout');
  457. ]]></programlisting>
  458. </example>
  459. </sect3>
  460. <sect3 id="zend.dojo.view.dijit.form">
  461. <title>Elementos de Dijit Form</title>
  462. <para>
  463. la validación de forms en Dojo y los dijits de entrada están en
  464. dijit.form.tree. Para más
  465. información sobre la utilización de estos
  466. elementos, así como los parámetros aceptados,
  467. por favor
  468. <ulink
  469. url="http://dojotoolkit.org/book/dojo-book-0-9/part-2-dijit/form-validation-specialized-input"
  470. >vea la docuemntación de dijit.form</ulink>
  471. .
  472. </para>
  473. <para>
  474. Los siguientes elementos de dijit form están disponibles en Zend
  475. Framework. Excepto
  476. cuando se señaló que todos tienen la firma
  477. <methodname>string ($id,$value = '', array $params = array(),
  478. array $attribs = array())</methodname>
  479. .
  480. </para>
  481. <itemizedlist>
  482. <listitem>
  483. <para>
  484. <emphasis>Button</emphasis>
  485. : dijit.form.Button. Muestra un
  486. botón de form.
  487. </para>
  488. <programlisting language="php"><![CDATA[
  489. <?php echo $view->button(
  490. 'foo',
  491. 'Show Me!',
  492. array('iconClass' => 'myButtons'),
  493. ); ?>
  494. ]]></programlisting>
  495. </listitem>
  496. <listitem>
  497. <para>
  498. <emphasis>CheckBox</emphasis>
  499. : dijit.form.CheckBox. Muestra
  500. un checkbox. Acepta opcionalmente un quinto
  501. argumento, el
  502. array
  503. <varname>$checkedOptions</varname>
  504. , que puede
  505. contener:
  506. </para>
  507. <itemizedlist>
  508. <listitem>
  509. <para>un array indexado con dos valores, un valor
  510. verificado y otro no, en
  511. ese orden; o</para>
  512. </listitem>
  513. <listitem>
  514. <para>un array asociativo con las claves 'checkedValue'
  515. y 'unCheckedValue'.</para>
  516. </listitem>
  517. </itemizedlist>
  518. <para>
  519. Si
  520. <varname>$checkedOptions</varname>
  521. no fueron
  522. suministradas, se asume 1 y 0.
  523. </para>
  524. <programlisting language="php"><![CDATA[
  525. <?php echo $view->checkBox(
  526. 'foo',
  527. 'bar',
  528. array(),
  529. array(),
  530. array('checkedValue' => 'foo', 'unCheckedValue' => 'bar')
  531. ); ?>
  532. ]]></programlisting>
  533. </listitem>
  534. <listitem>
  535. <para>
  536. <emphasis>ComboBox</emphasis>
  537. : dijit.layout.ComboBox. Los
  538. ComboBoxes son un híbrido entre un cuadro de
  539. selección y uno
  540. de texto con autocompletado. La diferencia fundamental es
  541. que
  542. puede escribir una opción que no está en la lista de las
  543. opciones disponibles, y
  544. que todavía considera válido el
  545. input. Opcionalmente acepta un quinto argumento,
  546. un array
  547. asociativo
  548. <varname>$options</varname>
  549. ; si lo hay, ComboBox
  550. será presentado como un
  551. <methodname>select</methodname>
  552. .
  553. Note también que la
  554. <emphasis>label values</emphasis>
  555. del
  556. array
  557. <varname>$options</varname>
  558. será devuelto al form -- y
  559. no los valores en si mismos.
  560. </para>
  561. <para>
  562. Alternativamente, puede pasar información sobre un
  563. datastrore dojo.data para
  564. utilizar con el elemento. Si la
  565. hay, el ComboBox será presentado como un texto
  566. <methodname>input</methodname>
  567. , y traerá sus opciones
  568. vía ese datastore.
  569. </para>
  570. <para>
  571. Para especificar un datastore, proporcionar una de las
  572. siguientes
  573. <varname>$params</varname>
  574. combinaciones de
  575. claves:
  576. </para>
  577. <itemizedlist>
  578. <listitem>
  579. <para>La clave 'store', con un valor de array; el array
  580. debe contener las
  581. claves:</para>
  582. <itemizedlist>
  583. <listitem>
  584. <para>
  585. <emphasis>store</emphasis>
  586. : el nombre de la
  587. variable javascript representando el
  588. datastore
  589. (este podría ser el nombre que
  590. desea para su uso).
  591. </para>
  592. </listitem>
  593. <listitem>
  594. <para>
  595. <emphasis>type</emphasis>
  596. : el tipo de
  597. datastore a usar; e.g.,
  598. 'dojo.data.ItemFileReadStore'.
  599. </para>
  600. </listitem>
  601. <listitem>
  602. <para>
  603. <emphasis>params</emphasis>
  604. (opcional): un
  605. array asociativo de pares clave/valor a
  606. utilizar
  607. para configurar el datastore. El
  608. 'url' param es un ejemplo
  609. típico.
  610. </para>
  611. </listitem>
  612. </itemizedlist>
  613. </listitem>
  614. <listitem>
  615. <para>Las claves:</para>
  616. <itemizedlist>
  617. <listitem>
  618. <para>
  619. <emphasis>store</emphasis>
  620. : un string
  621. indicando el nombre del datastore a usar.
  622. </para>
  623. </listitem>
  624. <listitem>
  625. <para>
  626. <emphasis>storeType</emphasis>
  627. : un string
  628. indicando el tipo de datastore dojo.data a
  629. usar (e.g.,
  630. 'dojo.data.ItemFileReadStore').
  631. </para>
  632. </listitem>
  633. <listitem>
  634. <para>
  635. <emphasis>storeParams</emphasis>
  636. : un array
  637. asociativo de pares clave/valor con los
  638. cuales
  639. configurar el datastore.
  640. </para>
  641. </listitem>
  642. </itemizedlist>
  643. </listitem>
  644. </itemizedlist>
  645. <programlisting language="php"><![CDATA[
  646. // Como un elemento select:
  647. echo $view->comboBox(
  648. 'foo',
  649. 'bar',
  650. array(
  651. 'autocomplete' => false,
  652. ),
  653. array(),
  654. array(
  655. 'foo' => 'Foo',
  656. 'bar' => 'Bar',
  657. 'baz' => 'Baz',
  658. )
  659. );
  660. // Como en elemento habilitado de dojo.data:
  661. echo $view->comboBox(
  662. 'foo',
  663. 'bar',
  664. array(
  665. 'autocomplete' => false,
  666. 'store' => 'stateStore',
  667. 'storeType' => 'dojo.data.ItemFileReadStore',
  668. 'storeParams' => array('url' => '/js/states.json'),
  669. ),
  670. );
  671. ]]></programlisting>
  672. </listitem>
  673. <listitem>
  674. <para>
  675. <emphasis>CurrencyTextBox</emphasis>
  676. :
  677. dijit.form.CurrencyTextBox. Se hereda de ValidationTextBox,
  678. y proporciona
  679. validación de moneda del lado del cliente. Se
  680. espera que el parámetro dijit
  681. 'currency' será siempre
  682. proporcionado con el código adecuado de 3 caracteres de
  683. la
  684. moneda. También puede especificar cualquiera de los
  685. parámetros dijit válidos
  686. para ValidationTextBox y TextBox.
  687. </para>
  688. <programlisting language="php"><![CDATA[
  689. echo $view->currencyTextBox(
  690. 'foo',
  691. '$25.00',
  692. array('currency' => 'USD'),
  693. array('maxlength' => 20)
  694. );
  695. ]]></programlisting>
  696. <note>
  697. <title>Cuestiones con la Construcción</title>
  698. <para>
  699. Actualmente hay
  700. <ulink url="http://trac.dojotoolkit.org/ticket/7183">
  701. problemas conocidos con el uso de CurrencyTextBox en
  702. la
  703. construcción de capas</ulink>
  704. . Una conocida
  705. solución alternativa es garantizar que el meta tag
  706. Content-Type de http-equiv en su documento esté
  707. establecido al conjunto de
  708. caracteres utf-8, que puede
  709. hacerlo llamando a:
  710. </para>
  711. <programlisting language="php"><![CDATA[
  712. $view->headMeta()->appendHttpEquiv('Content-Type',
  713. 'text/html; charset=utf-8');
  714. ]]></programlisting>
  715. <para>
  716. Por supuesto, esto significa que necesitará para
  717. garantizar que el marcador
  718. de posición
  719. <methodname>headMeta()</methodname>
  720. esté dentro de
  721. una sentencia "echo" de
  722. <acronym>PHP</acronym>
  723. en su
  724. script.
  725. </para>
  726. </note>
  727. </listitem>
  728. <listitem>
  729. <para>
  730. <emphasis>DateTextBox</emphasis>
  731. : dijit.form.DateTextBox. Es
  732. heredada de ValidationTextBox, y ofrece tanto
  733. validación de
  734. fechas de lado del cliente, así como un calendario
  735. desplegable desde
  736. el cual elegir una fecha. Puede
  737. especificar cualquiera de los parámetros dijit
  738. disponibles
  739. para ValidationTextBox o TextBox.
  740. </para>
  741. <programlisting language="php"><![CDATA[
  742. echo $view->dateTextBox(
  743. 'foo',
  744. '2008-07-11',
  745. array('required' => true)
  746. );
  747. ]]></programlisting>
  748. </listitem>
  749. <listitem>
  750. <para>
  751. <emphasis>Editor</emphasis>
  752. : dijit.Editor. Proporciona un
  753. editor WYSIWYG mediante el cual los usuarios
  754. pueden crear o
  755. editar el contenido.
  756. <methodname>dijit.Editor</methodname>
  757. es un editor pluggable y extensible, con una variedad de
  758. parámetros que puede
  759. utilizar para personalización; para más
  760. detalles vea
  761. <ulink
  762. url="http://dojotoolkit.org/book/dojo-book-0-9/part-2-dijit/advanced-editing-and-display/editor-rich-text"
  763. >la documentación de dijit.Editor</ulink>
  764. .
  765. </para>
  766. <programlisting language="php"><![CDATA[
  767. echo $view->editor('foo');
  768. ]]></programlisting>
  769. <note>
  770. <title>Editor Dijit uses div by default</title>
  771. <para>
  772. The Editor dijit uses an
  773. <acronym>HTML</acronym>
  774. <acronym>DIV</acronym>
  775. by
  776. default. The
  777. <classname>dijit._editor.RichText</classname>
  778. documentation
  779. indicates that having it built on an
  780. <acronym>HTML</acronym>
  781. <acronym>TEXTAREA</acronym>
  782. can
  783. potentially have security implications.
  784. </para>
  785. <para>
  786. That said, there may be times when you want an Editor widget that can
  787. gracefully degrade to a
  788. <acronym>TEXTAREA</acronym>
  789. . In such situations, you
  790. can do so by passing a boolean
  791. <constant>true</constant>
  792. value to the
  793. <varname>degrade</varname>
  794. parameter:
  795. </para>
  796. <programlisting language="php"><![CDATA[
  797. echo $this->editor('foo', '', array('degrade' => true));
  798. ]]></programlisting>
  799. </note>
  800. </listitem>
  801. <listitem>
  802. <para>
  803. <emphasis>FilteringSelect</emphasis>
  804. :
  805. dijit.form.FilteringSelect. Similar a ComboBox, este es un
  806. híbrido de
  807. select/text que puede hacer una lista de opciones
  808. o aquellos retornados vía un
  809. dojo.data datastore. A
  810. diferencia de ComboBox, sin embargo, FilteringSelect no
  811. permite escribir una opción ni siquieraen en su lista.
  812. Además, opera como un
  813. select standard en que los valores de
  814. opción, no las etiquetas, son devueltos
  815. cuando el form se
  816. envía.
  817. </para>
  818. <para>Por favor vea la información anterior sobre ComboBox para
  819. ejemplos y las
  820. opciones disponibles para definir datastores.
  821. </para>
  822. </listitem>
  823. <listitem>
  824. <para>
  825. <emphasis>HorizontalSlider</emphasis>
  826. y
  827. <emphasis>VerticalSlider</emphasis>
  828. :
  829. dijit.form.HorizontalSlider y dijit.form.VerticalSlider. Los
  830. sliders permiten a
  831. los widgets de UI seleccionar números en
  832. un rango dado; las variantes son
  833. horizontales y verticales.
  834. </para>
  835. <para>En lo más elemental, exigen los parámetros dijit
  836. 'minimum', 'maximum', y
  837. 'discreteValues'. Estos definen el
  838. rango de valores. Otras opciones comunes son
  839. las siguientes:</para>
  840. <itemizedlist>
  841. <listitem>
  842. <para>'intermediateChanges' se puede ajustar para
  843. indicar cuando disparar o
  844. no eventos onChange
  845. mientras el handler está siendo arrastrado.</para>
  846. </listitem>
  847. <listitem>
  848. <para>'clickSelect' se establece para permitir hacer
  849. click en un lugar del
  850. deslizador para ajustar el
  851. valor.</para>
  852. </listitem>
  853. <listitem>
  854. <para>'pageIncrement' puede especificar el valor de
  855. aumento/decremento cuando
  856. se utilizan pageUp y
  857. pageDown.</para>
  858. </listitem>
  859. <listitem>
  860. <para>'showButtons' se puede ajustar para permitir ver
  861. los botones de ambos
  862. extremos del deslizador para
  863. manipular el valor.</para>
  864. </listitem>
  865. </itemizedlist>
  866. <para>La implementación de Zend Framework crea un elemento
  867. oculto para guardar el
  868. valor del deslizador.</para>
  869. <para>Opcionalmente puede desear mostrar una regla o etiquetas
  870. para el deslizador.
  871. Para hacerlo, se asignará uno o más de
  872. los parámetros dijit 'topDecoration' y/o
  873. 'bottomDecoration'
  874. (HorizontalSlider) o 'leftDecoration' y/o 'rightDecoration'
  875. (VerticalSlider). Cada uno de éstos espera las siguientes
  876. opciones:</para>
  877. <itemizedlist>
  878. <listitem>
  879. <para>
  880. <emphasis>container</emphasis>
  881. : nombre del
  882. contenedor.
  883. </para>
  884. </listitem>
  885. <listitem>
  886. <para>
  887. <emphasis>labels</emphasis>
  888. (opcional): un array de
  889. etiquetas a utilizar. Use strings vacíos en
  890. cualquiera de los extremos para dotar de etiquetas
  891. solamente a los
  892. valores internos. Es necesario
  893. cuando se especifica uno de las variantes
  894. dijit
  895. 'Labels'.
  896. </para>
  897. </listitem>
  898. <listitem>
  899. <para>
  900. <emphasis>dijit</emphasis>
  901. (opcional): uno de los
  902. siguientes será por defecto la dijits Rule (regla)
  903. HorizontalRule, HorizontalRuleLabels, VerticalRule,
  904. o VerticalRuleLabels.
  905. </para>
  906. </listitem>
  907. <listitem>
  908. <para>
  909. <emphasis>params</emphasis>
  910. (opcional): los dijit
  911. params son para configurar la Regla dijit en uso.
  912. Los parámetros específicos de estos dijits incluyen:
  913. </para>
  914. <itemizedlist>
  915. <listitem>
  916. <para>
  917. <emphasis>container</emphasis>
  918. (opcional):
  919. array de parámetros y atributos para el
  920. contenedor de
  921. la regla.
  922. </para>
  923. </listitem>
  924. <listitem>
  925. <para>
  926. <emphasis>labels</emphasis>
  927. (opcional):
  928. array de parámetros y atributos para el
  929. contenedor de
  930. la lista de etiquetas.
  931. </para>
  932. </listitem>
  933. </itemizedlist>
  934. </listitem>
  935. <listitem>
  936. <para>
  937. <emphasis>attribs</emphasis>
  938. (opcional): atributos
  939. HTML para utilizar con las reglas/etiquetas. Esto
  940. debería seguir el formato de opción
  941. <methodname>params</methodname>
  942. y ser un array
  943. asociativo con las claves 'container' y 'labels'.
  944. </para>
  945. </listitem>
  946. </itemizedlist>
  947. <programlisting language="php"><![CDATA[
  948. echo $view->horizontalSlider(
  949. 'foo',
  950. 1,
  951. array(
  952. 'minimum' => -10,
  953. 'maximum' => 10,
  954. 'discreteValues' => 11,
  955. 'intermediateChanges' => true,
  956. 'showButtons' => true,
  957. 'topDecoration' => array(
  958. 'container' => 'topContainer'
  959. 'dijit' => 'HorizontalRuleLabels',
  960. 'labels' => array(
  961. ' ',
  962. '20%',
  963. '40%',
  964. '60%',
  965. '80%',
  966. ' ',
  967. ),
  968. 'params' => array(
  969. 'container' => array(
  970. 'style' => 'height:1.2em; font-size=75%;color:gray;',
  971. ),
  972. 'labels' => array(
  973. 'style' => 'height:1em; font-size=75%;color:gray;',
  974. ),
  975. ),
  976. ),
  977. 'bottomDecoration' => array(
  978. 'container' => 'bottomContainer'
  979. 'labels' => array(
  980. '0%',
  981. '50%',
  982. '100%',
  983. ),
  984. 'params' => array(
  985. 'container' => array(
  986. 'style' => 'height:1.2em; font-size=75%;color:gray;',
  987. ),
  988. 'labels' => array(
  989. 'style' => 'height:1em; font-size=75%;color:gray;',
  990. ),
  991. ),
  992. ),
  993. )
  994. );
  995. ]]></programlisting>
  996. </listitem>
  997. <listitem>
  998. <para>
  999. <emphasis>NumberSpinner</emphasis>
  1000. :
  1001. dijit.form.NumberSpinner. Text box numérico para entrada,
  1002. con botones para
  1003. incremento y decremento.
  1004. </para>
  1005. <para>Espera bien un array asociativo del parámetro dijit
  1006. 'constraints' o simplemente
  1007. las claves 'min', 'max', y
  1008. 'places' (estas serían también las entradas esperadas
  1009. del
  1010. parámetro de restricciones). 'places' puede ser utilizada
  1011. para indicar en
  1012. cuánto se incrementará y decrementará el
  1013. número giratorio.</para>
  1014. <programlisting language="php"><![CDATA[
  1015. echo $view->numberSpinner(
  1016. 'foo',
  1017. 5,
  1018. array(
  1019. 'min' => -10,
  1020. 'max' => 10,
  1021. 'places' => 2,
  1022. ),
  1023. array(
  1024. 'maxlenth' => 3,
  1025. )
  1026. );
  1027. ]]></programlisting>
  1028. </listitem>
  1029. <listitem>
  1030. <para>
  1031. <emphasis>NumberTextBox</emphasis>
  1032. :
  1033. dijit.form.NumberTextBox. NumberTextBox ofrece la capacidad
  1034. de dar formato y
  1035. mostrar entradas numéricas de una manera
  1036. localizada, así como validar entradas
  1037. numéricas,
  1038. opcionalmente en contra de las restricciones dadas.
  1039. </para>
  1040. <programlisting language="php"><![CDATA[
  1041. echo $view->numberTextBox(
  1042. 'foo',
  1043. 5,
  1044. array(
  1045. 'places' => 4,
  1046. 'type' => 'percent',
  1047. ),
  1048. array(
  1049. 'maxlength' => 20,
  1050. )
  1051. );
  1052. ]]></programlisting>
  1053. </listitem>
  1054. <listitem>
  1055. <para>
  1056. <emphasis>PasswordTextBox</emphasis>
  1057. :
  1058. dijit.form.ValidationTextBox está atada a una contraseña.
  1059. PasswordTextBox ofrece
  1060. la posibilidad de crear una entrada
  1061. para contraseña que adhiere al actual tema
  1062. dijit, así como
  1063. permitir la validación del lado del cliente.
  1064. </para>
  1065. <programlisting language="php"><![CDATA[
  1066. echo $view->passwordTextBox(
  1067. 'foo',
  1068. '',
  1069. array(
  1070. 'required' => true,
  1071. ),
  1072. array(
  1073. 'maxlength' => 20,
  1074. )
  1075. );
  1076. ]]></programlisting>
  1077. </listitem>
  1078. <listitem>
  1079. <para>
  1080. <emphasis>RadioButton</emphasis>
  1081. : dijit.form.RadioButton.
  1082. Una serie de opciones entre las que sólo una puede ser
  1083. seleccionada. Esta se comporta en todos los sentidos como
  1084. una de radio normal,
  1085. pero tiene un look-and-feel consistente
  1086. con otros dijits.
  1087. </para>
  1088. <para>
  1089. RadioButton acepta un cuarto argumento como opción,
  1090. <varname>$options</varname>
  1091. , un array asociativo de
  1092. pares valor/etiqueta utilizado como opciones de radio.
  1093. También puede pasar estos como la clave
  1094. <methodname>options</methodname>
  1095. de
  1096. <varname>$attribs</varname>
  1097. .
  1098. </para>
  1099. <programlisting language="php"><![CDATA[
  1100. echo $view->radioButton(
  1101. 'foo',
  1102. 'bar',
  1103. array(),
  1104. array(),
  1105. array(
  1106. 'foo' => 'Foo',
  1107. 'bar' => 'Bar',
  1108. 'baz' => 'Baz',
  1109. )
  1110. );
  1111. ]]></programlisting>
  1112. </listitem>
  1113. <listitem>
  1114. <para>
  1115. <emphasis>SimpleTextarea</emphasis>
  1116. :
  1117. dijit.form.SimpleTextarea. Estos actuarán como textareas
  1118. normales, pero se
  1119. estilizan usando el tema actual de dijit.
  1120. No necesita especificar los atributos
  1121. ya sea de las filas o
  1122. de las columnas; use
  1123. <methodname>ems</methodname>
  1124. o
  1125. porcentajes del ancho y del alto en su lugar.
  1126. </para>
  1127. <programlisting language="php"><![CDATA[
  1128. echo $view->simpleTextarea(
  1129. 'foo',
  1130. 'Start writing here...',
  1131. array(),
  1132. array('style' => 'width: 90%; height: 5ems;')
  1133. );
  1134. ]]></programlisting>
  1135. </listitem>
  1136. <listitem>
  1137. <para>
  1138. <emphasis>SubmitButton</emphasis>
  1139. : un dijit.form.Button está
  1140. atado a un elemento de entrada a enviar. Vea el
  1141. ayudante de
  1142. vista de Button para más detalles; la diferencia fundamental
  1143. es que
  1144. este botón puede enviar un form.
  1145. </para>
  1146. </listitem>
  1147. <listitem>
  1148. <para>
  1149. <emphasis>Textarea</emphasis>
  1150. : dijit.form.Textarea. Éstas
  1151. actuarán como textareas normales, salvo que en lugar
  1152. de un
  1153. determinado número de filas, se expanden a medida que el
  1154. usuario tipea. El
  1155. ancho debe especificarse mediante una
  1156. regla de estilo.
  1157. </para>
  1158. <programlisting language="php"><![CDATA[
  1159. echo $view->textarea(
  1160. 'foo',
  1161. 'Start writing here...',
  1162. array(),
  1163. array('style' => 'width: 300px;')
  1164. );
  1165. ]]></programlisting>
  1166. </listitem>
  1167. <listitem>
  1168. <para>
  1169. <emphasis>TextBox</emphasis>
  1170. : dijit.form.TextBox. Este
  1171. elemento está presente principalmente para
  1172. proporcionar un
  1173. look-and-feel común entre los diversos elementos dijit, y a
  1174. ofrecer funcionalidades de base para otras clases derivadas
  1175. de TextBox
  1176. (ValidationTextBox, NumberTextBox,
  1177. CurrencyTextBox, DateTextBox, y TimeTextBox).
  1178. </para>
  1179. <para>El parámetro común de dijit para los flags incluyen
  1180. 'lowercase' (emitido a
  1181. minúsculas), 'uppercase' (emitido a
  1182. mayúsculas), 'propercase' (emitido a Proper
  1183. Case), y trim
  1184. (elimina los espacios en blanco iniciales y finales); todos
  1185. aceptan
  1186. valores booleanos. Además, puede especificar los
  1187. parámetros 'size' y 'maxLength'.</para>
  1188. <programlisting language="php"><![CDATA[
  1189. echo $view->textBox(
  1190. 'foo',
  1191. 'some text',
  1192. array(
  1193. 'trim' => true,
  1194. 'propercase' => true,
  1195. 'maxLength' => 20,
  1196. ),
  1197. array(
  1198. 'size' => 20,
  1199. )
  1200. );
  1201. ]]></programlisting>
  1202. </listitem>
  1203. <listitem>
  1204. <para>
  1205. <emphasis>TimeTextBox</emphasis>
  1206. : dijit.form.TimeTextBox.
  1207. También de la familia TextBox, TimeTextBox proporciona
  1208. una
  1209. selección desplazable drop down de la cantidad de veces que
  1210. un usuario podrá
  1211. seleccionar. Los parámetros Dijit le
  1212. permiten especificar el tiempo disponible
  1213. para incrementos
  1214. en el select así como un rango visible de veces en
  1215. disponibilidad.
  1216. </para>
  1217. <programlisting language="php"><![CDATA[
  1218. echo $view->timeTextBox(
  1219. 'foo',
  1220. '',
  1221. array(
  1222. 'am.pm' => true,
  1223. 'visibleIncrement' => 'T00:05:00', // 5-minute increments
  1224. 'visibleRange' => 'T02:00:00', // show 2 hours of increments
  1225. ),
  1226. array(
  1227. 'size' => 20,
  1228. )
  1229. );
  1230. ]]></programlisting>
  1231. </listitem>
  1232. <listitem>
  1233. <para>
  1234. <emphasis>ValidationTextBox</emphasis>
  1235. :
  1236. dijit.form.ValidateTextBox. Proporciona validaciones del
  1237. lado del cliente para
  1238. un elemento de texto. Se hereda desde
  1239. TextBox.
  1240. </para>
  1241. <para>Los parámetros comunes de dijit incluyen:</para>
  1242. <itemizedlist>
  1243. <listitem>
  1244. <para>
  1245. <emphasis>invalidMessage</emphasis>
  1246. : un mensaje para
  1247. mostrar cuando se ha detectado una entrada inválida.
  1248. </para>
  1249. </listitem>
  1250. <listitem>
  1251. <para>
  1252. <emphasis>promptMessage</emphasis>
  1253. : un mensaje
  1254. tooltip de ayuda a utilizar.
  1255. </para>
  1256. </listitem>
  1257. <listitem>
  1258. <para>
  1259. <emphasis>regExp</emphasis>
  1260. : una expresión regular a
  1261. utilizar para validar el texto. La Expresión
  1262. Regular
  1263. no requiere de marcadores de límites.
  1264. </para>
  1265. </listitem>
  1266. <listitem>
  1267. <para>
  1268. <emphasis>required</emphasis>
  1269. : si el elemento es
  1270. necesario o no. Si fuera necesario, y el elemento
  1271. está incrustado en un dijit.form.Form, será marcado
  1272. como inválido y no se
  1273. enviará.
  1274. </para>
  1275. </listitem>
  1276. </itemizedlist>
  1277. <programlisting language="php"><![CDATA[
  1278. echo $view->validationTextBox(
  1279. 'foo',
  1280. '',
  1281. array(
  1282. 'required' => true,
  1283. 'regExp' => '[\w]+',
  1284. 'invalidMessage' => 'No se permiten espacios o caracteres especiales',
  1285. 'promptMessage' => 'Una palabra consiste de caracteres ' .
  1286. 'alfanuméricos y underscores solamente',
  1287. ),
  1288. array(
  1289. 'maxlength' => 20,
  1290. )
  1291. );
  1292. ]]></programlisting>
  1293. </listitem>
  1294. </itemizedlist>
  1295. </sect3>
  1296. <sect3 id="zend.dojo.view.dijit.custom">
  1297. <title>Dijits Personalizados</title>
  1298. <para>
  1299. Si ahonda mucho en Dojo, se encontrará escribiendo bastantes
  1300. dijits personalizados, o
  1301. utilizando dijits experimentales de Dojox.
  1302. Si bien Zend Framework no puede apoyar a todos
  1303. los dijit
  1304. directamente, si proporciona algún apoyo rudimentario para tipos
  1305. dijit
  1306. arbitrarios vía el ayudante de vista
  1307. <code>CustomDijit</code>
  1308. .
  1309. </para>
  1310. <para>
  1311. La
  1312. <acronym>API</acronym>
  1313. del ayudante de vista
  1314. <methodname>CustomDijit</methodname>
  1315. es exactamente lo que
  1316. cualquier otro dijit es, con una diferencia importante: el tercer
  1317. argumento de "params"
  1318. <emphasis>debe</emphasis>
  1319. contener el atributo
  1320. "dojotype". El valor de este atributo debe ser la clase Dijit que
  1321. planea usar.
  1322. </para>
  1323. <para>
  1324. <code>CustomDijit</code>
  1325. extiende la base del ayudante
  1326. de vista
  1327. <code>DijitContainer</code>
  1328. , que también le
  1329. permite capturar el contenido (utilizando el par de métodos
  1330. <methodname>captureStart()</methodname>
  1331. /
  1332. <methodname>captureEnd()</methodname>
  1333. ).
  1334. <methodname>captureStart()</methodname>
  1335. también espera que pase
  1336. el atributo "dojoType" a su argumento "params".
  1337. </para>
  1338. <example id="zend.dojo.view.dijit.custom.example">
  1339. <title>Usando CustomDijit para mostrar un
  1340. dojox.layout.ContentPane</title>
  1341. <para>
  1342. <methodname>dojox.layout.ContentPane</methodname>
  1343. es la
  1344. siguiente generación de iteración de
  1345. <methodname>dijit.layout.ContentPane</methodname>
  1346. , y
  1347. proporciona un superconjunto de capacidades de esa clase. Hasta
  1348. que la
  1349. funcionalidad se estabilice, seguirá viviendo en Dojox.
  1350. Sin embargo, si quiere
  1351. utilizarlo hoy en Zend Framework, puede
  1352. hacerlo, utilizando el ayudante de vista
  1353. <code>CustomDijit</code>
  1354. .
  1355. </para>
  1356. <para>Para lo más básico, puede hacer lo siguiente:</para>
  1357. <programlisting language="php"><![CDATA[
  1358. <?php echo $this->customDijit(
  1359. 'foo',
  1360. $content,
  1361. array(
  1362. 'dojoType' => 'dojox.layout.ContentPane',
  1363. 'title' => 'Custom pane',
  1364. 'region' => 'center'
  1365. )
  1366. ); ?>
  1367. ]]></programlisting>
  1368. <para>
  1369. Si quiere capturar el contenido en su lugar, simplemente use
  1370. el método
  1371. <methodname>captureStart()</methodname>
  1372. , y pase el
  1373. "DojoType" al argumento de "params":
  1374. </para>
  1375. <programlisting language="php"><![CDATA[
  1376. <?php $this->customDijit()->captureStart(
  1377. 'foo',
  1378. array(
  1379. 'dojoType' => 'dojox.layout.ContentPane',
  1380. 'title' => 'Custom pane',
  1381. 'region' => 'center'
  1382. )
  1383. ); ?>
  1384. This is the content of the pane
  1385. <?php echo $this->customDijit()->captureEnd('foo'); ?>
  1386. ]]></programlisting>
  1387. <para>
  1388. Fácilmente puede extender también
  1389. <methodname>CustomDijit</methodname>
  1390. para crear apoyo para
  1391. sus propios dijits personalizados. Como ejemplo, si extiende
  1392. <methodname>dijit.layout.ContentPane</methodname>
  1393. para crear
  1394. su propia clase
  1395. <methodname>foo.ContentPane</methodname>
  1396. , puede
  1397. crear el siguiente ayudante de apoyo:
  1398. </para>
  1399. <programlisting language="php"><![CDATA[
  1400. class My_View_Helper_FooContentPane
  1401. extends Zend_Dojo_View_Helper_CustomDijit
  1402. {
  1403. protected $_defaultDojoType = 'foo.ContentPane';
  1404. public function fooContentPane(
  1405. $id = null, $value = null,
  1406. array $params = array(), array $attribs = array()
  1407. ) {
  1408. return $this->customDijit($id, $value, $params, $attribs);
  1409. }
  1410. }
  1411. ]]></programlisting>
  1412. <para>
  1413. Mientras que su dijit personalizado siga la misma base
  1414. <acronym>API</acronym>
  1415. que los dijits oficiales, utilizar o
  1416. extender
  1417. <code>CustomDijit</code>
  1418. debería funcionar
  1419. correctamente.
  1420. </para>
  1421. </example>
  1422. </sect3>
  1423. </sect2>