I have an issue with the modelTransoformer. In my Article entity I can have Tags entity and due to the fact that I can have many tags for one entity I added a js plugin to add multiple tags. In order to pass them through I use the addModelTransformer to the field "tags".
However if I don't pass a Tag then It just creates an empty one. So I added a logic to check the length of the string for each string but I got an error saying:
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;
}
));