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);
}
Benjamin
quelle
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


quelle
0

Entfernen Sie das Wortarray vor $ tags

Shinto Joseph
quelle
Und wie geben Sie den Klassennamen an? Hast Du es versucht?
Benjamin