Üdv!
Adott egy táblázat, ami egy SQL query eredményét mutatja, kb.:
<?php function mymodul_list() { $res = db_query("SELECT ..."); // ... // headers $header = array( array('data' => t('Country'), 'field' => 'country', 'sort' => 'asc'), // ... ); // rows $rows = array(); // ... $query = db_select('mymodul', 'c')->distinct()->extend('PagerDefault')->extend('TableSort'); // ... $result = $query ->limit(50) ->orderByHeader($header) ->execute(); $build['mymodul_table'] = array( '#theme' => 'table', '#header' => $header, '#rows' => $rows, ); $build['mymodul_pager'] = array( '#theme' => 'pager', ); return $build; } ?>
Meghíváskor tehát lefut egy alap SQL query. Ezen csak annyit szeretnék szépíteni, hogy a táblázat felett kellene 1-2 mező és pl. egy "Szűrés" gomb, ami az SQL-t szűri. Azaz a gombnyomásra újra "lefut" ez a form, de az SQL módosul a mezőkben megadott feltételekkel.
Ezt hogyan lehet szépen megoldani?
Tegyek a táblázat fölé mezőket és egy submit gombot? Pl.:
function mymodul_list($form, &$form_state) { $build['filter1'] = array( '#type' => 'textfield', // ... ); $build['submit'] = array( '#type' => 'submit', // ... ); ...
A postolt form adatokat nem tudom ($form_state['values']['filter1']) felhasználni. Bár ez valamiért nem működött. Nem létezett a $form_state['values'] sem.
Mi lenne a szép megoldás?
Drupal verzió:
Fórum:
drupal_get_form
Azt hiszem ezt kerestem:
http://drupal.org/node/1284526#comment-5011558
A drupal_get_form() fv-t kellene meghívni a tablázatos megjelenítésnél.
Ki is próbálom...
Az említett minta D6-os:
no form
nálam sajnos nem jelenik meg a form (D7). :(
megy
működik, csak a _submit() fv-be kell egy
és a formon elérhetők a $form_state['values']['...'] értékek.