情况:我已经在我的某个表单中获得了以下代码:
$builder->add('Type', 'choice', array
(
'label' => 'Enter body types',
'choices' => array('Sedan'=>'Sedan','Wagon'=>'Wagon',...),
'multiple' => true,
))
问题:当用户选择多个值(例如Sedan和Wagon)时,异常'数组转换为字符串'因为显而易见的原因而被抛出。
问题:有没有办法添加一些表单选项,可以处理数组到字符串的转换?我的意思是类似于这个:
'someOption' => function ($selectedArray)
{
$returnString = "";
for ($selectedArray as $singleValue){ $returnString = $returnString . ",". $singleValue }
return $returnString;
}
答案 0 :(得分:3)
问题在于,您的字段Type
是一个字符串,并且在您的表单中,您允许使用多个值。
当表单处理多个可选字段时,您不是使用简单值而是使用值数组。当您在实体字段中设置此数组并尝试将此实体保存在数据库中,并且因为您的字段设计为简单字符串时,php将尝试获取值的字符串版本...就像:(字符串)array(),这在PHP中是不可行的:)
您可以将值定义为Array,或者应禁用此多重选择:)
注意:强>
如果您需要选择多个数组,您的表单应该处理数组 值。你的实体应该用数组映射处理这个(就像我一样) SAID)。