FLOW3-Aktionsparameter und Arrays von Objekten


77

FLOW3 bietet eine bequeme Möglichkeit, Entitäten als ID in der URL zu übergeben und sie automatisch in den Parametern der Controller-Aktion zu instanziieren:

class PostController extends \TYPO3\FLOW3\MVC\Controller\ActionController {
    public function editAction(Post $post) {
        ...
    }
}

Aber was ist mit dem Anwendungsfall, in dem Sie Kontrollkästchen haben, die jeweils ein bestimmtes Objekt darstellen? Es wäre praktisch, sie auch automatisch zu beleuchten:

<input type="checkbox" name="tags[]" value="1" />
<input type="checkbox" name="tags[]" value="2" />
...

Gibt es eine Möglichkeit, FLOW3 anzuweisen, die $tagsVariable automatisch als Array von TagObjekten zu instanziieren ? Etwas wie:

public function setTagsAction(Post $post, /** @var Model\Tag */ array $tags) {
    $post->setTags($tags);
}

8
Jetzt Beta, melden Sie die fehlende Funktion (oder fehlerhafte Implementierung);)
hakre

1
Ich möchte sicher sein, dass es nicht bereits möglich ist, bevor ich eine Feature-Anfrage schreibe :)
Benjamin

7
versuchen <input type="checkbox" name="tags[][__identity]" value="1" />(zumindest in extbase sollte dies möglich sein)
konsolenfreddy

Haben Sie einen DTO ausprobiert?
Thicolares

@colares Wie würde ein DTO hier helfen?
Benjamin

Antworten:


2
/**
 * @param Post $post
 * @param \Doctrine\Common\Collections\ArrayCollection<\your\namespace\Model\Tag> $tag
 */

public function setTagsAction(Post $post, $tags) { ...

afaik Doctrine konvertiert Ihr Array in eine Sammlung, die Objekte enthält, die vom bereitgestellten Array zugeordnet sind


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.