Wozu die Extension?¶
Danger
Diese Extension wird Dir viel, viel Zeit sparen. Zeit, die Du dann mit anderen Dinge verbringen musst. Mit Deinen Kindern, Deinem Ehepartner oder Deiner cholerischen Schwiegermutter. Anders gesagt: Dir könnten die Ausreden ausgehen.
Falls Du Zweifel hast, ob Du das durchhältst, sollten Du nnhelpers nicht installieren. Für Risiken und Nebenwirkungen, die durch gewonnene Zeit in Deinem Entwicklerleben auftreten könnten, übernehmen wir keine Haftung.
Was macht nnhelpers?¶
Diese Extension übernimmt den unschönen Teil Deines Entwickleralltags. Immer wenn Du denkst: "Verdammt, das muss doch irgendwie einfacher gehen" wirst Du Dich an nnhelpers erinnern. Die Extension sitzt in einem Backend-Modul, immer griffbereit – und (fast) immer mit einem einfachen Einzeiler, der Dein Problem löst.
Du willst Beispiele? Wunderbar.¶
Schon mal probiert, in Typo3 ein simples Upload-Formular zu bauen, bei dem Dein User im Frontend ein Bild hochladen kann? Klingt eigentlich nach einem Kinderspiel, oder?
Nun ja. Wäre es auch – gäbe es da nicht den "File Abstract Layer" (FAL).
Ein neues Domain-Model ist schnell gebaut und instanziiert. Aber wie bekommt man die Upload-Datei aus dem PHP tmp-Verzeichnis vernünftig in eine SysFileReference
konvertiert, die sich an das Model hängen lässt?
Du stellt die Frage Google. Nach vielen Varianten Deiner Suchphrase landest Du auf der vielversprechenden Doku unter docs.typo3.org. Leider findest Du dort nur die ernüchternde Aussage: "Sorry, mein Lieber. Nicht unser Bier. Frag Helmut."
Du gibst also Helmut einen Besuch. Der macht einen prima Job. Viel Code. Super strukturiert und kommentiert. Eine knappe halbe Stunde versuchst Du, in seinem Repo genau das Stück destillierten Code zu identifiziern, das Du für Deinen Fall brauchst.
Für das Beispiel oben haben wir in der ersten Umsetzung knapp 4 Stunden gebraucht. Wir waren damals in der 6er Version von Typo3. Als dann Typo3 7 LTS veröffentlicht wurde, suchten wir erneut - im Core gab es neue, brilliante Ideen. Und in Version 8? Halleluja.
Immer wieder passten wir alle Extensions von uns an die neuen Konzepte der Typo3 Versionen an. Und jedes Mal schien uns das recht sinnfrei. Viel Zeit, die ich offen gesagt lieber mit anderen Dingen verbringe. Wenn es sein muss, auch mit meiner Schwiegermutter.
Wie lösen wir das heute?
nnhelpers
um Hilfe bitten.
Das Backend Modul zeigt alle Methoden und ViewHelper übersichtlich gruppiert nach Themen¶

Jede Methode hat eine ausführliche Erklärung und Beispiel.¶
setInModel()
hört sich genau nach dem an, was wir suchen.\nn\t3::Fal()->setInModel( $model, 'fieldname', 'path/to/image.jpg' );
ObjectManager->get()
, kein @inject
?foreach
-Schleife daraus machen. Aber Moment!\nn\t3::Fal()->setInModel( $model, 'fieldname', ['image-1.jpg', 'image-2.jpg'] );
\nn\t3::Fal()->setInModel( $member, 'fieldname', ['publicUrl'=>'01.jpg', 'title'=>'Titel', 'description'=>'...'] );
\nn\t3::Fal()->setInModel( $member, 'fieldname', [
['publicUrl'=>'01.jpg', 'title'=>'Titel', 'description'=>'...'],
['publicUrl'=>'02.jpg', 'title'=>'Titel', 'description'=>'...'],
]);

Quelltext direkt im Backend anschauen.¶