Op dit moment worden de header en footer van een form (dus <form..., maar ook de javascripts en FormHandler promotieteksten, etc.) simpelweg aan het begin en eind van het formulier toegevoegd. Zou het ook mogelijk zijn om deze middels variabelen als bijv. %fh_header% en %fh_footer% binnen een SetMask-masker te positioneren?
Indien dit mogelijk zou zijn zou dit veel code en overerving (lees: geheugengebruik) binnen veel scripts kunnen schelen. Bovendien moet ik op dit moment 2 templates aanhouden; één voor het masker en één voor de webpagina zelf. Indien bovengenoemde oplossing gerealiseerd zou kunnen worden, zou men in staat zijn het hele formulier rechtstreeks in de pagina template (o.a. Smarty templates!) op te nemen! :-)
Mocht het realiseerbaar zijn, dan geef ik hier graag nadere toelichting over op dit forum!
Changed at 29 January 10 / 14:29
Ik denk dat dat het doel van FH voorbij schiet.
Dat is heel specifiek voor jou van toepassing, maar ik betwijfel of het van nu nut is voor andere gebruikers.
Ik begrijp overigens niet goed wat je bedoeld met het in 1 keer opnemem van het hele formulier, dat is nu ook heel goed mogelijk.
Je kunt je formulier toch als string op ieder gewenste positie neer zetten?
In mijn ogen is het juist zo generiek als wat en zeker voor meerdere gebruikers van FormHandler een handige feature. Het is minstens zo generiek als de %error_style% waarvoor ik enige tijd geleden code aanleverde.
Ik zal proberen hier onder in zo min mogelijk tekst toch het idee duidelijk te maken. Ik weet niet in hoeverre ik het voordeel van deze feature hiermee duidelijk kan maken, maar ga het toch proberen. Het is in mijn ogen echt iets wat zich in de praktijk moet bewijzen, maargoed hier komt ie:
Op dit moment wordt er als het goed is door menigeen zo gewerkt met FormHandler i.c.m. Smarty:
De hierboven omschreven methode werkt op zich goed. Echter, zodra je met complexere formulieren te maken krijgt en dus hier en daar wat HTML tussen de velden door wilt gooien, zit je gelijk vast aan het setten van meerdere maskers of door de AddHTML functie te gebruiken. Maargoed, dan ben je dus alsnog met opmaak bezig binnen je PHP code en dat is nou net wat we willen vermijden...
Mocht het formulier toch wat aan de simpele kant zijn, dan nog zou het efficienter kunnen. Via de hierboven omschreven methode heb je immers te allen tijde minimaal 2 maskers nodig; 1 voor smarty en 1 voor formhandler.
In je templates heb je op deze manier 100% controle over de layout en hoeft helemaal niets wat styling betreft geregeld te worden in de PHP code. Het enige dat hiervoor dus hoeft te gebeuren is een optie om %fh_header% en %fh_footer% in je template op te nemen. Indien deze %-variabelen in de template voorkomen, plaats je de FormHandler header en footer daar, indien ze niet voorkomen plaats je ze simpel op de oude manier boven en onderaan het formulier.
Nogmaals; dit is een voorbeeld met een heel simpel formulier. De echte kracht zou zich pas uiten op het moment dat je complexe formulieren gaat bouwen.
Ongeacht de complexiteit scheelt deze werkwijze sowieso het bijhouden van meerdere templates (maskers) voor slechts 1 pagina. Daarnaast scheelt het een hoop code.
Ok, jammer. Ik snap niet helemaal waarom efficiëntere code en ruimere implementatiemogelijkheden het doel van FormHandler voorbijschieten, maar die keus is uiteraard volledig aan jullie.
Het bijhouden van een eigen versie is niet echt een optie; want dan mis ik alle updates die er onderwijl door jullie aan worden gedaan. En die zijn doorgaans wel de moeite waard...
Changed at 13 February 10 / 15:08
Ik heb er toch maar een eigen versie van gemaakt. Bij deze de wijzigingen die hiervoor nodig waren. Ik hoop dat jullie het nog eens zouden willen overwegen, want zoals je ziet maakt het nauwelijks verschil in de code:
Tip: in class.MaskLoader.php staat op meerdere plekken een preg_replace(), terwijl hetzelfde gedaan kan worden met de snellere str_replace() functie. T.b.v. performance wellicht een idee om dit om te zetten?
Ah je hebt gelijk. Bij het schrijven van de uitleg hierboven was ik even dat stukje vergeten. Zojuist heb ik de post gewijzigd, zodat het nu zou moeten kloppen.
Wat betreft de handleiding zou ik iets vermelden als:
"Wenst u de <form> en </form> tags op een specifieke positie in uw HTML te plaatsen? Gebruik dan %fh_header% en %fh_footer% in uw template/mask. Wanneer de variabelen niet gevonden worden, zal FormHandler de tags automatisch aan het begin en eind van uw formulier invoegen."
ziet er goed uit en lijkt ook inderdaad goed te werken, dus een nieuwe download beschikbaar. Ik maak er verder geen melding van dan allen in de change log