Maquetar Formularios

July 13, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Maquetar Formularios...

Description

 

Aplicar un theme, plantilla o template a formularios en Drupal 6 Supongamos que tenemos un formulario que creamos para que se vea en la URL http://www.ejemplo.com/ themed_form El formulario definido en el modulo tendría una pinta como la siguiente: function formulario(){ 1 $form['nombre'] = array( 2 '#title' => t('Nombre'), 3 '#type' => 'textfield', 4 ); 5   6 $form['apellido'] = array( 7 '#title' => t('Apellido'), 8 '#type' => 'textfield', 9 ); 10   11 $form['mail'] = array( 12 '#title' => t('e-mail'), 13 '#type' => 'textfield', 14 ); 15   16 $form['telefono'] = array( 17 '#title' => t('Teléfono'), 18 '#type' => 'textfield', 19 ); 20   21 $form['submit'] = array( 22 '#type' => 'submit', 23 '#value' => t('Enviar'), 24 ); 25 return $form; 26 } 27 Y el hook_menu tendría una pinta como esta: function theme_form_sample_menu(){ 1 $items['themed_form'] = array( 2 'title' => 'Muestra de themado de un formulario', 3 'page callback' => 'render_formulario', 4 'access arguments' => array(true), 5 'type' => MENU_CALLBACK, 6 ); 7 return $items; 8 } 9 Y la función para aplicar sobre la url seria: 1 function render_formulario(){ 2 //podemos agregar nuestros extras. 3 drupal_add_js(drupal_get_path('module', 'theme_form_sample') .'/js/ejemplo.js'); 4 drupal_add_css(drupal_get_path('module', 'theme_form_sample') .'/css/ejemplo.css'); 5   6 //ya podemos generar el formulario. 7 8

}

return drupal_get_form("formulario");

 

El formulario se va a dibujar correctamente y lo podemos maquetar con CSS si queremos, pero, y si además de los elementos del formulario tenemos que meterle mas HTML ¿que hacemos?. ¿Modificamos la función que define al formulario metiéndole markups por todos lados?. Pues no. ¿Entonces cual es la forma en la que los formularios en drupal 6 se maquetan?: Fácil. Agregas una linea mas en la definición del formulario como esta: $form['#theme'] = "theme_para_formulario"; La podes poner al principio o justo al final antes del return para mayor comodidad. Ahora bien, esto no es todo (si la vida fuera tan simple…), además nos hace falta definir  el hook_theme(): 1 function theme_form_sample_theme() { 2 return array( 3 'theme_para_formulario' => array( 4 'template' => 'formulario', 5 'arguments' => array('form' => NULL), 6 ), 7 ); 8 } (Noten que en el argumento paso una variable llamada “form”) Ahora creamos la plantilla “formulario.tpl.php” “formulario.tpl.php” y agregamos el siguiente código: echo drupal_render($form); Guardarlo, limpia la cache y probalo. Podes ver que el formulario ahí está, se dibuja, pero claro, seguís sin poder manosear  sus elementos por separado. Solucionemos eso o mi post va a dejar de tener sentido: Cambiemos el anterior código de la plantilla (echo drupal_render($form);) por este otro: ; 1 ; 2 ; 3 ; 4 Como se puede ver, lo que estoy haciendo es renderizar  uno a uno los elementos del formulario. En el ejemplo anterior recordaras recordaras que hicimos algo así  como “drupal_render($form)” “drupal_render($form)”. Bueno lo que pasa allí básicamente es que toma el array que definiste en la función y lo convierte en HTML, Y como nosotros queremos  poder renderizar las partes del formulario por separado la teoría dice que si en lugar de mandar el array entero, mandamos un pedasito, debería funcionar, y es justamente lo que ha pasado en el segundo ejemplo. pero falta algo acá.. el resto del formulario. Sin ir mas lejos falta el botón de envío, los token, el form_id (lo pueden ver el el código fuente de la pagina renderizada). Eso pasa porque nosotros ya podemos controlar cuales elementos vamos a mandar a renderizar por separado, pero no le hemos dicho que hacer con el resto. Solucionemos esto agregando esta linea al justo debajo de las anteriores: Guardar, probar, Alegrarse. Ahora solo nos queda aprovechar que estamos parados en una plantilla y agregar el HTML que nos haga falta para poder darle la forma que queramos:

 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

         
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF