Ich versuche gerade im FormBuilder ein Wysiwyg-Container einzufügen, der auch mit Dateianhängen umgehen kann (speziell Bilder).
Dazu habe ich mir im FormBuilder entsprechend einen WysiwygFormContainer erstellt:
WysiwygFormContainer::create("message")
->messageObjectType("mein.object.entry")
->supportSmilies(false)
->attachmentData("mein.object.entry", $this->parentID)
->required()
Wenn ich jetzt einen Eintrag bearbeite, sprich mit der objectAction edit statt create arbeite, kann ich die Dateianhänge entsprechend einfügen und speichern. Dazu maßgeblich ist die entsprechende update-Methode in meiner Action-Klasse:
$htmlInputProcessor = $this->parameters["message_htmlInputProcessor"];
$message = $htmlInputProcessor->getHtml();
$this->parameters["data"]["message"] = $message;
parent::update();
$htmlInputProcessor->setObjectID($this->getObjectIDs()[0]);
MessageEmbeddedObjectManager::getInstance()->registerObjects($htmlInputProcessor);
return new Entry($this->getObjectIDs()[0]);
Erstelle ich aber einen Eintrag, kann ich zwar die Dateianhänge hochladen und im WyiswygFormField einfügen, aber diese werden beim Absenden des Formulars nicht dem Eintrag zugeordnet. Analog zur update-Methode habe ich auch eine create-Methode, die eigentlich gleich funktionieren sollte:
$htmlInputProcessor = $this->parameters["message_htmlInputProcessor"];
$message = $htmlInputProcessor->getHtml();
$this->parameters["data"]["message"] = $message;
$entry = parent::create();
$htmlInputProcessor->setObjectID($entry->getObjectID());
MessageEmbeddedObjectManager::getInstance()->registerObjects($htmlInputProcessor);
return $entry;
Der einzige Unterschied, den ich erkennen kann, ist dass beim Erstellen des Eintrages noch keine ObjectID vorhanden ist (bis diese durch parent::create() erzeugt wird), beim Bearbeiten hingegen schon. Das deckt sich auch mit den Einträgen in wcf1_attachment.
Beim Erstellen sieht das ganze dann so aus:
und nach dem Absenden des Formulars so:
Es ist dann nur noch der BB Code für das Attachment vorhanden, aber es wird nicht eingebunden.
Bearbeite ich den Eintrag und lade die Datei erneut hoch, wird sie ordnungsgemäß dem Eintrag zugeordnet und anschließend auch entsprechend in dem Eintrag eingebunden.
Was muss ich beim Erstellen des Eintrags beachten, damit der Dateianhang korrekt dem Eintrag zugeordnet wird?