Параметри дії FLOW3 та масиви об’єктів


77

FLOW3 забезпечує зручний спосіб передавати сутності за ідентифікатором у URL-адресі та отримувати їх автоматично в екземплярі в параметрах дії контролера:

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

Але як щодо випадку використання, коли у вас є прапорці, кожен з яких представляє певний об’єкт? Було б зручно отримати їх також автообґрунтування:

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

Чи є спосіб сказати FLOW3 автоматично інстанціювати $tagsзмінну як масив Tagоб’єктів? Щось на зразок:

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

8
Тепер бета-версія, повідомте про відсутність функції (або помилкову реалізацію);)
hakre

1
Я хотів би бути впевненим, що це ще неможливо, перш ніж писати запит на функцію :)
Бенджамін,

7
спробуйте <input type="checkbox" name="tags[][__identity]" value="1" />(принаймні в extbase це повинно бути можливим)
konsolenfreddy

Ви пробували DTO?
thicolares

@colares Як тут допоможе DTO?
Бенджамін

Відповіді:


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

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

Доктрина afaik перетворить ваш масив на об'єкти, що містять колекцію, зіставлені наданим масивом


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.