在 属性 路径 "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;
}
));
有人可以解释为什么我会收到此错误吗?我是第一次使用 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;
}
));