phpbar.de logo

Mailinglisten-Archive

[php] oohforms

[php] oohforms

Ulf Wendel UW_(at)_NetUSE.DE
Fri, 09 Jun 2000 15:14:23 +0200


Guido Haeger wrote:
> 
> Chris Skladny schrieb
> 
> > gebe bitte mal $f aus, und zwar gleich nachdem du die Variable
> > initialisiert hast. Du wirst sicherlich feststellen, das du die
> > Variable $f falsch initialisiert hast.
> 
> $f ist keine Variable, sondern ein Objekt
> 
> > weil du in $f ein String schreibst muesste so aussehen:
> > $f = "new form";
> 
> Nö, dann ist $f ja eine Variable vom Typ String, er will aber ein
> Objekt, wie man an den ersten zwei Teilen des Code-Schnipsels unschwer
> erkennen kann.

Muß am Namen von diesem Chris liegen, der ist nicht weit vom
Helden Slatko entfernt.
 
> Zur eigentlichen Frage: Die OOFORMS (hier von phplib 7.2) bieten IMHO
> aktuell keine Funktionalität, um z.B. einen Radio-Button mit " selected"
> vorzuselektieren. Bei Select-Feldern und Checkboxen sind IMHO

Doch, sollte möglich sein. Wie alles in den alten OOHForms ist es
jedoch etwas versteckt.

Ganz von vorne. Das Form Objekt, welches Du in deiner Applikation
benutzt, verwaltet eine Liste von Form_Elements[.inc] Objekten.
Diese enthalten viele (leider nicht alle) Informationen, die zur
Darstellung und Validierung eines einzelnen HTML Form Elements
benötigt werden.

Jedes Form_Element Objekt hat u.a. die Eigenschaft value. Diese
wird bei der Erzeugung des Form_Element Objekts gesetzt.
Form_Element Objekte werden durch Form->add_element() erzeugt. 

Alle Form_Element Objekte sind von einer Basisklasse abgeleitet
und haben i.W. die gleichen Methoden. Eine dieser Methoden,
self_get() ist für die Erzeugung von HTML verantwortlich. Wenn
also einer darüber entscheidet ob ein Element "checked" ist oder
nicht, dann self_get(). 

Bei Betrachtung von Form_Elements_Radio->self_get() fällt auf,
daß checked gedruckt wird, wenn der erste Parameter mit dem Wert
der Eigenschaft value des Objekts identisch ist. 

Wer ruft self_get() wann und wie auf? Das "Verwaltungsobjekt"
Form. Form bietet die Methoden get_element() und show_element(),
um einzelne Elemente anzuzeigen. Hierzu erinnert sich Form an
sein Form_Elements_Radio Objekt mit dem passenden Namen und ruft
dessen Methode self_get() auf. Hierbei reicht get_element()
einzelne seiner Parameter an self_get() durch, darunter auch der
optionale zweite Parameter $value:

<?php
   function get_element($name,$value=false) { [...] }
?>

Jetzt nochmal alles zusammen: 

1. Form kontrolliert Form Elemente
2. Form Elemente haben einen Value
3. Form Elemente erzeugen HTML in der Methode self_get() [nebst
self_get_frozen()]

4. Radio Form Elemente testen bei Erzeugung von HTML ob ihr Value
zum Zeitpunkt der Definition mit dem aktuellen Value
übereinstimmt. Dies wird durch eine Übergabe des aktuellen Wertes
als Parameter an self_get() möglich.

5. Form reicht einen optionalen Parameter $value seiner Methode
get_element() direkt weiter an die Methodem self_get() [und
self_get_frozen()] seiner Form Elemente

Und die Moral von der Geschicht:
Achte bei der Definition eines Radio-Elements mit add_element()
darauf, daß Du einen Value angibst. Dann gib bei get_element()
ebenfalls einen Value an und man hat Chancen, daß es
funktioniert.

Und was sagt der kleine Nixnutz dazu:
Stürze Dich auf die als Alpha Version verfügbaren neuen FORMS
(nicht mehr OOHForms), die laufen stabiler als man glaubt
(nachdem Du etwas geschliffen hast) und die API wird sich nicht
mehr wesentlich verändern. Doku? Ne, einige Examples, API Doku
folgt in der nächsten Woche.

Ulf


php::bar PHP Wiki   -   Listenarchive