Táblázaton belüli form elemek használata

realdream képe

A következőt szeretném:
Van egy saját modulom, saját tartalomtípussal, sql lekérdezéssel stb...

Szeretnék egy eseménynaptárat kiteni a képernyőre, amely egy html táblázaton (table) belül van. Pl. Oszlop nap neve, sor az óra. Itt a felhasználó checkbox és select form elemeket jelölhet ki. A táblázatot a modulnak kell előállítani.

A hook_form() -nak $form['..'] elemeket tudok csak átadni?
Az sql lekérdezés eredményét szeretném szépen php-val generált táblázatban megjeleníteni.
Mi az ajánlott megoldás ebben az esetben?

Drupal verzió: 
Sweetchuck képe

?q=admin/user/user
?q=admin/content/node

további infó

csak ezt ne használd theme_table_select_header_cell()

0
0
realdream képe

Elvileg ha jól láttam két megoldás van:
a, a form elemeket az output létrehozásakor hozzáadom a theme('table', $header, $rows);-hoz
b, létrehozok egy theme_...() függvényt a form elemek megjelenítéséhez.

Az első talán egyszerűbbnek tűnik, de nem biztos, hogy meglehet csinálni...

Egyelőre létrehozok egy smink theme_...() függvényt az biztos működik.

Köszönöm a példákat.

0
0

-------------------------------
http://www.realdream.hu

realdream képe

Megcsináltam, de megint túl bonyolult és munkaigényes...

Ha van egy sql lekérdezésem ami meghatározza a táblázat szövegét és a form elemeket is, akkor azt két függvényben kell futtatni kétszer?
1. Form elemek létrehozása,
2. Téma (táblázat elkészítése)

Ez duplán terheli a szervert, és mi van ha közben az adatbázis megváltozik?

Egyszer szeretném futtatni a while ($node = db_fetch_object($lekerdezes1)) ciklust és ezen belül a táblázatot feltölteni form elemekkel és szöveggel... ez lehetséges?

A működő, de bonyolult megoldásban ezeket a függvényeket használtam:

//Téma regisztrálása
function test_theme()
{
...
}
//Form létrehozása
function test()
{
...
}
 
//Téma 
function theme_test($form)
{
...
}
 
//Form betöltése
function test_name..()
{
    $output = drupal_get_form('test');
    return $output;
}
//Form feldolgozása
function test_submit($form_id, &$form_state)
{
...
}
0
0

-------------------------------
http://www.realdream.hu

Pasqualle képe

mit kell ketszer futtatni?

az elso fuggveny beolvassa az adatokat a masodik fuggveny meg megjeleniti. Minden rendes form igy van keszitve.. A masodik fuggvenyt pedig barki felulirhatja a sminkjeben ha mas megjelenitest szeretne..

0
0
realdream képe

A sminkben való felülírás nem szükséges, mert ez egy egyedi fejlesztés ami nagy adatbázisból dolgozik és a sebesség az első szempont. Nemcsak a beviteli mezők, hanem a táblázat és az abban található szövegek (ezekhez kell a theme, mert a theme nélkül nem lehet egy formot táblázatban megjeleníteni) is adatbázis lekérdezés alapján készülnek. Az adatbázis nagyon nagy és az sql lekérdezés elég bonyolult. Ha külön kell a formot és a hozzá tartozó szövegeket és html elemeket kezelni, akkor
milyen lehetőség van paramétereket és adatokat átadni a hook_form, theme és submit függvényeknek és ezek között?
Erre használjam a $_SESSION['..']-t?

0
0

-------------------------------
http://www.realdream.hu

Pasqualle képe

form, theme és submit fuggvenyek kozott az adatok atadasa automatikus.. szoval probald ki es ha elakadsz akkor szolj..

tokmindegy, hogy egy fuggvennyel oldasz meg valamit, vagy szetbontod a kodot ket fuggvenyre (feldolgozas, megjelenites), nem igaz? nem latom miert panaszkodsz a sebessegre..

0
0
realdream képe

Ha kétszer kell futtatni az sql lekérdezést, az lassítja, ezt akarom elkerülni.

Pl. heti naptár és időpontokra lehet jelentkezni checkbox-ok bejelölésével.

a, ..._form(): Sql lekérdezés leválogat pl. vid, időpont, nap neve, esemény neve... tehát meghatározza a form elemeket amiket be lehet jelölni:

    while ($node = db_fetch_object($lekerdezes1))
    {
$datum=$node->utc_date;
$form['checking'][$node->vid] = array('#type' => 'checkbox', '#title' =>$node->availability, );
    }

b, theme_..() a témában ezeket a megfelelő napokhoz és a megfelelő órához kell kiírni egy táblázatban, hogy vigyem át a form elemhez tartozó nap nevét és időpontját?
0
0

-------------------------------
http://www.realdream.hu

Pasqualle képe

ha megnezel egy peldat, eleg egyertelmu. a $form valtozot kell hasznalni..

0
0
realdream képe

Köszönöm szépen a segítséget, de nem tudok a változónak értéket adni...

Tehát pl.

function modulneve_teszt($par_uid)
{
    $uid=$par_uid;
    $output = drupal_get_form('modulneve_form_1');
    return $output;
}

A $form['felhasznalo']=$uid nem működik.
Hogy tudom az $uid változót átküldeni a _form, theme_, _submit függvényekbe és ott hogy tudom lekérdezni?
Egy példa sokat segítene
0
0

-------------------------------
http://www.realdream.hu

aboros képe

http://api.drupal.org/api/file/developer/topics/forms_api_reference.html...

..
$form['par_uid'] = array('#type' => 'value', '#value' => $par_uid);
..
0
0

-
clear: both;