Symfony 2:ModelTransformer - 传递空值

时间:2017-05-01 23:44:31

标签: php symfony symfony-forms

我遇到了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;
                }
            ));

0 个答案:

没有答案