Portál AbcLinuxu, 15. prosince 2025 10:06
. Formulář se nadefinuje jednoduchým XML, který obsahuje pro každý vstupní pole jeden element s atributama povinný / nepovinný, defaultní hodnota, typ validace, typ pole (text, textarea, radio, checkbox...) atd.. Jednodouchou XSL transformací pak z tohohle definičního souboru vyrábím HTML formulář, kterej vkládám do jakýkoli HTML stránky pomocí AJAXu. Odeslání probíhá taky přes AJAX, tj. stránka se nereloaduje, pouze se v případě nesprávně vyplněnejch vstupních polí dá tato skutečnost vizuálně najevo. Pokud je všechno v pořádku, formulář zmizí a místo něj se vypíše libovolná hláška, nadefinovaná taky v onom definičním XML.
Data ukládám zatím zase jenom do XML, ale protože je PHP backend objektovej, není problém rozšířit metodu pro ukládání o použití databáze místo filesystému a pak v konfiguráku změnit jeden řádek.
Zatím mi to takhle vyhovuje, protože celá tahle věc vlastně nemá žádný administrační rozhraní - jenom edituju a čtu XML soubory, což je opravdu rychlý.
.
Ve skutecnosti pouzivam jejiho potomka, kde mam upravene nektere drobnosti. A na administraci mam vlastni tridy, ze kterych je teprve generovani formulare volano.
Na listovani mam take hotovou tridu. Po inicializaci tam pridavam sloupecky a muzu na ne navazat jejich vlastni Viewery (tridy, ktere jsou pri pruchodu listem zavolany a vraci obsah bunky).
Vzniklo to ale postupnym nabalovanim, uz to bude potreba poradne procistit. Nicmene pouzivam se to pomerne snadno, coz je v mem pripade brzda pokroku :)
Jsem zvedav, jestli vypadne neco rozumneho ze Zend Frameworku. Formulare tam zatim jeste nemaj a co je hotovo, je reseno pro mne casto dost neprijemne. Hlavne doufam, ze pujde rozumne pouzivat jen nektere komponenty, treba PDF nebo Lucene.
kterej vkládám do jakýkoli HTML stránky pomocí AJAXuNemyslím si, protože jinak byste tohle nemohl napsat.
XMLHttpRequest hackuje přes ActiveX, stejně jako emulace metody responseXML, takže v něm nesmí být v rámci nějaké bezpečnostní politiky zakázán, ale to pravděpodobně víš
K cemuz vyse uvedene docela prispiva.
require_once "lib/page.inc.php"; require_once "lib/auth.inc.php"; require_once "lib/editor.inc.php";Je to opravdu celé. Včetně kreslení stránky okolo. To co se skrývá v editor.inc.php je už trošku delší. Brzy tohle i zbytek aplikace zveřejním, jen na to zrovna nemám čas.
$auth = new Auth(); $lvl = $auth->check_login(); $page = new Page("Pokus", $auth->get_username(), $lvl); $page->generate_header();
$ed = new Editor($_POST, array(), $auth->get_userid(), 12345); $ed->add_text_entry('item1', 'Polozka 1', true); $ed->add_text_entry('item2', 'Polozka 2', true); $ed->add_text_entry('item3', 'Polozka 3', true);
if ($ed->is_completed()) { // zpracovani dat } else { $ed->render_form(); }
$page->generate_footer();
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.