【问题标题】:FLOW3 action parameters and arrays of objectsFLOW3 动作参数和对象数组
【发布时间】:2011-12-06 21:41:26
【问题描述】:

FLOW3 提供了一种通过 URL 中的 ID 传递实体的便捷方式,并在控制器操作的参数中自动实例化它们:

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

【问题讨论】:

  • 现在是测试版,报告缺少的功能(或错误的实现);)
  • 在编写功能请求之前,我想确定它是不可能的 :)
  • 试试&lt;input type="checkbox" name="tags[][__identity]" value="1" /&gt;(至少在extbase中应该可以)
  • 你试过 DTO 吗?
  • @colares DTO 将如何提供帮助?

标签: php model-view-controller orm typo3-flow


【解决方案1】:

移除$tags之前的单词数组

【讨论】:

  • 你如何指定类名?你试过了吗?
【解决方案2】:
/**
 * @param Post $post
 * @param \Doctrine\Common\Collections\ArrayCollection<\your\namespace\Model\Tag> $tag
 */

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

afaik Doctrine 会将您的数组转换为由提供的数组映射的集合保存对象

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2021-07-06
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    相关资源
    最近更新 更多