FLOW3 动作参数和对象数组
Posted
技术标签:
【中文标题】FLOW3 动作参数和对象数组【英文标题】:FLOW3 action parameters and arrays of objects 【发布时间】: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);
【问题讨论】:
现在是测试版,报告缺少的功能(或错误的实现);) 在编写功能请求之前,我想确定它是不可能的 :) 试试<input type="checkbox" name="tags[][__identity]" value="1" />
(至少在extbase中应该可以)
你试过 DTO 吗?
@colares DTO 将如何提供帮助?
【参考方案1】:
移除$tags之前的单词数组
【讨论】:
你如何指定类名?你试过了吗?【参考方案2】:/**
* @param Post $post
* @param \Doctrine\Common\Collections\ArrayCollection<\your\namespace\Model\Tag> $tag
*/
public function setTagsAction(Post $post, $tags) ...
afaik Doctrine 会将您的数组转换为由提供的数组映射的集合保存对象
【讨论】:
以上是关于FLOW3 动作参数和对象数组的主要内容,如果未能解决你的问题,请参考以下文章
如何创建 If 语句以检查数组中的某些对象。 Flash CS5 动作脚本 3
关于ivx中将对象数组的某一列添加到另一对象数组中的经验总结