Mailinglisten-Archive |
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