Se encuentra usted aquí

VARIOS FORM

Hola,
Mi problema es el siguiente. Estoy realizando un nuevo módulo que buscar registros en una tabla externa a drupal. Por ahora, soy capaz de mostrar un formulario de búsqueda y enviarlo a otra página para mostrar los resultados encontrados:

$form['byrid'] = array(
'#title' => t('Search by reference'),
'#type' => 'fieldset',
'#collapsible' => TRUE,
'#COLLAPSAPSED' => FALSE,
);
$form['byrid']['rid'] = array(
'#title' => t('Reference'),
'#type' => 'textfield',
'#required' => TRUE,
);
$form['byrid']['submit'] = array(
'#type' => 'submit',
'#value' => t('Search'),
);

Tengo creado un menu de tipo MENU_CALLBACK que muestra la tabla con los resultados a través de theme_table.

Ahora, mi problemas problemas son los siguientes:
- quiero añadir un nuevo formulario en la misma página para buscar por otro concepto (teléfono).
- quiero mostrar la tabla con los resultados en la misma página debajo de los formularios.

Si alguien me pudiera ayudar lo agradecería. Muchas gracias.

Forums: 
Versión: 

la idea detras del mecanismo para lograr eso es concatenar todo.

por ejemplo, en drupal 7 (es un poco diferente en drupal 6) solamente tienes que hacerle así:

return drupal_render(drupal_get_form('nombre_de_la_funcion_que_regresa_la_forma')) . theme('table', array('header' => $header, 'rows' => $rows, 'empty' => t('Nada.'))) . theme('pager', array('tags' => array()));

donde nombre_de_la_funcion_que_regresa_la_forma() regresa un render array con la forma.

Este return sería el return de tu menu callback.

 

me imagino que se puede usar theme('table', ...) o theme_table(...)indistintamente

Muchas gracias!!! No era nada del otro mundo, no. jeje. Pero cuando algo no te sale...
Redirecciono el formulario al MENU_CALLBACK y le paso como argumento el parámetro de búsqueda. De esta forma, si el usuario pulsa F5 se vuelve a realizar la consulta ¿Hay alguna forma de hacerlo en el mismo submit del formulario para que esto no ocurra? No consigo que me muestre la tabla, sólo el mensaje con drupal_set_message()

Yo lo que hago es generar la tabla dentro del menu callback (la funcion cuyo return es en el que todo se concatena)

Y para pasar los parametros que el usuario pone en la forma, simplemente hago que la funcion submit de la forma guarde los parametros en $_SESSION['lo_que_sea']['el_parametro']
esta funcion no tiene return.

De esta manera en el menu callback checo si $_SESSION['lo_que_sea'] existe (isset()) y genero aplico los filtros a la consulta basado en los contenidos de $_SESSION['lo_que_sea'][...]

con los resultados de la consulta genero la tabla y luego concateno todo (la forma y la tabla) como lo mencione en mi post anterior.

 

espero me haya dado a entender

p.s. en mi caso, el submit callback de la forma NO ES la misma funcion que el menu callback

Hola,

Me funciona correctamente lo que comentas del $_SESSION. Una vez recogido el valor en la función de callback hago un unset($_SESSION['variable']); para que, al pulsar F5, no se pueda actualizar la página y volver a hacer el select a la bbdd.
Ahora el problema lo tengo al usar un paginador, que al redireccionar a la misma página con ?page=XXX ya he perdido el valor de $_SESSION['variable'] y entonces no pagina el resultado.
¿Alguna opción para poder usar estas dos cosas juntas?
Muchas gracias por adelantado!!!