Form submit AHAH használatával
Sziasztok!
A következő feladathoz kérnék segítséget:
Egy blokkba teszek egy linket, amire kattintva "előjön" egy form. Itt a felhasználó kitölt 1-2 mezőt, aztán rányom a submitra. Az adatokat validálni kell, ha hiba van, annak meg kell jelennie az űrlapon. Ha minden jól ment, akkor kiírunk egy üzenetet, majd pár másodperc múlva eltüntetjük a formmal együtt. Mindezt oldalújratöltés nélkül.
Nos, ez többé-kevésbé már meg is van, de valahogy mégis úgy éreztem, kérdeznem kell vele kapcsolatban, mert nem vagyok benne biztos, hogy jó megközelítést választottam.
AHAH segítségével próbálkoztam, elolvastam boobaa írását, és még sok másikat.
Azt hiszem, értem is a dolgokat (bár egészen más felhasználásokra találtam példát).
Jelenleg úgy működik a kód, amit írtam, hogy a submit gombnak megadtam ezt:
<?php $form['submit'] = array( '#type' => 'submit', '#value' => t('OK'), '#ahah' => array( 'event' => 'click', 'path' => 'video/add-link', 'wrapper' => 'video-message', 'method' => 'replace', 'effect' => 'fade', 'progress' => array( 'type' => 'throbber', ), ), ); ?>
Tehát ha erre kattintunk, meghívódik a video/add-link útvonalhoz tartozó callback függvényem, amiben levalidálom az inputokat (amiket a $_POST-ból olvasok ki), ha minden rendben, elmentem node_save()-vel, és a drupal_json()-nel visszaadok egy üzenetet, hogy minden okés (ez megy a #video-message divbe). Ha pedig a validálás megakadt valamin, akkor egy üzenetet, hogy valami nem stimmel. (Természetesen ekkor nincs node_save.)
Ez így rendben is megy, de azt gondolom, hogy ez a Form API figyelmen kívül hagyása, és nem szép megoldás.
Maga a form nem is tud róla, hogy most rendben mentek-e a dolgok, vagy nem (mert submit valójában nem is történt).
A drupal_json által visszaadott tömbben hiába állítgatom a status kulcs értékét (TRUE vagy FALSE), nem tudom, hogy ezt hol tudnám lekezelni. A data kulcsban megadott szöveg megjelenik a kívánt helyen, de ennyi.
Szóval gyakorlatilag hátravan még az, hogy valahogy a js-ből tudjam, hogy beküldtek egy tartalmat, és ha minden rendben ment, akkor tüntessem el a formot.
Elméletileg kíváncsi lennék, hogy ez így milyen megoldás, teljesen rossz volt-e a megközelítés, vagy csak kicsit kell rajta módosítani, vagy egyáltalán, ti hogyan csinálnátok?