Hallo Well,
der Inhalt der Text-Area ist wie bei einem HTML-Element
<textarea /> im Content des Tags gespeichert. Jede Taglib speichert daher im Attribut
$this->__Content ihren Inhalt. Das können einfache Text-Inhalte oder auch die Platzhalter für die Kind-Tags sein. Du kannst daher die Text-Area ganz bequem per
Code: Alles auswählen
class richtext_taglib_area extends ... {
public function &getTextArea(){
return $this->__Children['area'];
}
}
aus der Taglib zurückgeben und im Controller per
(1.12) oder mit
(1.11) beziehen.
Ich denke, dass ich da noch einen Fehler in der Implentierung gemacht habe? (Zudem beleibt der Inhalt nach dem Absenden nicht erhalten.

)
Ich persönlich würde jedoch die Taglib anders implementieren, da du sonst das Feature der Area-Taglib garnicht wirklich nutzen kannst. Da in
form_taglib_area bereits alle relevanten Funktionen einer Text-area vorhanden sind, kann du diese einfach durch die Taglib
Code: Alles auswählen
class richtext_taglib_area extends form_taglib_area {
public function richtext_taglib_area(){
parent::form_taglib_area();
}
}
repräsentieren. Sofern du noch den Namen beeinflussen möchtest, reicht ein
Code: Alles auswählen
class richtext_taglib_area extends form_taglib_area {
public function richtext_taglib_area(){
parent::form_taglib_area();
}
public function onParseTime(){
$this->setAttribute('name',$this->__ParentObject->getAttribute('name'));
$this->setAttribute('id',$this->__ParentObject->getAttribute('name').'_area');
parent::onParseTime();
}
}
Nun kannst du in der Klasse
form_taglib_richtext die Taglib einfach per
Code: Alles auswählen
class form_taglib_richtext extends form_control {
public function form_taglib_richtext(){
$this->__TagLibs[] = new Taglib('your::namespace','richtext','area');
}
}
bekannt machen. Ich denke, dass du in der Klasse zudem in der
onParseTime() die Methode
__extractTaglibTags() aufrufst. Dort wird dann die Taglib analysiert und als Kind automatisch in den DOM gehängt. Mehr musst du an sich nicht tun.
// EDIT: hierdurch funktioniert insbesondere das Presetting der Werte automatisch!
Anschließend kannst du dann innerhalb der Klasse
form_taglib_richtext mit der oben vorgestellten Methode
Code: Alles auswählen
public function getTextArea(){
foreach($this->__Children as $objectId => $DUMMY){
if(get_class($this->__Children[$objectId]) === 'richtext_taglib_area'){
return $this->__Children[$objectId];
}
}
return null;
}
die Instanz des DOM-Knotens an den Controller zurückgeben und dort wie in Post weiter oben beschrieben verarbeiten.
Ich hoffe, damit kommst du weiter!
