我遇到了modelTransoformer的问题。在我的文章实体中,我可以拥有Tags实体,并且由于我可以为一个实体添加许多标签,因此我添加了一个js插件来添加多个标签。为了传递它们,我使用 addModelTransformer 到字段"标记"。
但是,如果我没有通过标记,那么它只会创建一个空的。所以我添加了一个逻辑来检查每个字符串的字符串的长度,但是我收到一条错误说:
The property "tags" in class "AppBundle\Entity\Article" can be defined with the methods "addTag()", "removeTag()" but the new value must be an array or an instance of \Traversable, "NULL" given.
ArticleType :
$builder->get('tags')
->addModelTransformer(new CallbackTransformer
(
function($tags)
{
$recentTags = array();
foreach($tags as $tag)
{
array_push($recentTags, $tag->getName());
}
return implode(',', $recentTags);
},
function($tagsAsString)
{
$tags = explode(',', $tagsAsString);
$tagsAsEntities = array();
foreach($tags as $tag)
{
if(strlen($tag) > 2)
{
$tag = $this->entityManager->getRepository('AppBundle:Tag')->getTagOrCreateTag($tag);
array_push($tagsAsEntities, $tag);
}
}
return (empty($tagsAsEntities)) ? null : $tagsAsEntities;
}
));