CollectionType类型为“字符串或空”的预期参数,在属性路径“ cc”处给出的“数组”

问题描述 投票:3回答:2

有人可以解释为什么我遇到此错误吗?我是第一次使用CollectionType。使用documentation。这是我尝试使用CollectionType的地方:

$builder->add('cc', CollectionType::class, [
         'required' => false,
         'entry_type' => EmailType::class
])

这是我的要求:

{
    "email" => "[email protected]",
    "description" => "test description",
    "subject" => "test",
    "cc" => array:1 [
         0 => "[email protected]"
    ]
}
php symfony symfony-forms symfony4
2个回答
3
投票

所以我的问题出在EmailEntity,其中cc是字符串。我已使用Data Transformers解决此问题。刚刚添加:

$builder->get('cc')
        ->addModelTransformer(new CallbackTransformer(
            function ($array) {
                return $array;
            },
            function ($array) {
                return json_encode($array);
            }
));

并且不要忘记添加use Symfony\Component\Form\CallbackTransformer;


1
投票

我遇到了与您几乎相同的问题,但是您的确切解决方案对我不起作用,但是您使我走上了解决之路,因此给了您+1的权利。我想写这个作为评论,但是太长了。这是我必须更改您的解决方案以使其起作用的原因:

$builder->get('myCollection')
    ->addModelTransformer(new CallbackTransformer(
        function ($array) {
            return $array;
        },
        function ($array) {
            $res = array();
            foreach($array as $item) {
                if ($item === null) {
                    $item = '';
                }
                $res[] = $item;
            }

            return $res;
        }
    ));
© www.soinside.com 2019 - 2024. All rights reserved.