在 属性 路径 "cc" 处给出的 "string or null"、"array" 类型的 CollectionType 预期参数

CollectionType expected argument of type "string or null", "array" given at property path "cc"

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

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

这是我的请求:

{
    "email" => "test@test.com",
    "description" => "test description",
    "subject" => "test",
    "cc" => array:1 [
         0 => "test1@test.com"
    ]
}

所以我的问题出在 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。我想把它写成评论,但它太长了。这是我必须更改您的解决方案才能使其工作的内容:

$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;
        }
    ));